diff --git a/docs/categories/all.html b/docs/categories/all.html
index 317f9576..f93db33d 100644
--- a/docs/categories/all.html
+++ b/docs/categories/all.html
@@ -353,7 +353,7 @@
Yes
Yes |
No |
- 193 |
+ 195 |
@@ -376,7 +376,7 @@ Yes |
Yes |
Yes |
- 5466 |
+ 5477 |
@@ -462,7 +462,7 @@ Yes |
Yes |
Yes |
- 23176 |
+ 23182 |
@@ -525,7 +525,7 @@ Yes |
Yes |
Yes |
- 601 |
+ 603 |
@@ -571,7 +571,7 @@ Yes |
Yes |
No |
- 1336 |
+ 1337 |
@@ -883,7 +883,7 @@ No |
Yes |
Yes |
- 21078 |
+ 21096 |
@@ -929,7 +929,7 @@ No |
Yes |
Yes |
- 2757 |
+ 2765 |
@@ -1087,7 +1087,7 @@ Yes |
Yes |
Yes |
- 8832 |
+ 8833 |
@@ -1406,7 +1406,7 @@ Yes |
Yes |
Yes |
- 4185 |
+ 4191 |
@@ -1429,7 +1429,7 @@ Yes |
Yes |
Yes |
- 1315 |
+ 1317 |
@@ -1807,7 +1807,7 @@ No |
Yes |
No |
- 1658 |
+ 1659 |
@@ -1941,7 +1941,7 @@ No |
Yes |
No |
- 1606 |
+ 1607 |
@@ -2182,7 +2182,7 @@ No |
Yes |
Yes |
- 1084 |
+ 1085 |
@@ -2293,7 +2293,7 @@ No |
Yes |
Yes |
- 2529 |
+ 2530 |
@@ -2442,7 +2442,7 @@ No |
Yes |
Yes |
- 1371 |
+ 1372 |
@@ -2509,7 +2509,7 @@ No |
Yes |
No |
- 89 |
+ 90 |
@@ -2593,7 +2593,7 @@ No |
No |
Yes |
- 9429 |
+ 9430 |
@@ -2662,7 +2662,7 @@ No |
Yes |
Yes |
- 6668 |
+ 6667 |
@@ -2708,7 +2708,7 @@ No |
Yes |
Yes |
- 16845 |
+ 16846 |
@@ -2729,7 +2729,7 @@ No |
Yes |
Yes |
- 4570 |
+ 4571 |
@@ -2798,7 +2798,7 @@ Yes |
Yes |
Yes |
- 557 |
+ 558 |
@@ -3231,7 +3231,7 @@ No |
Yes |
No |
- 4986 |
+ 4985 |
@@ -3390,7 +3390,7 @@ No |
Yes |
No |
- 4062 |
+ 4065 |
@@ -3436,7 +3436,7 @@ Yes |
Yes |
No |
- 736 |
+ 737 |
@@ -3522,7 +3522,7 @@ No |
Yes |
Yes |
- 96 |
+ 97 |
@@ -3545,7 +3545,7 @@ No |
Yes |
Yes |
- 5921 |
+ 5922 |
@@ -3589,7 +3589,7 @@ No |
Yes |
Yes |
- 12425 |
+ 12431 |
@@ -3830,7 +3830,7 @@ No |
Yes |
No |
- 28036 |
+ 28043 |
@@ -3982,7 +3982,7 @@ Yes |
Yes |
No |
- 1232 |
+ 1234 |
@@ -4005,7 +4005,7 @@ Yes |
Yes |
Yes |
- 1684 |
+ 1686 |
@@ -4097,7 +4097,7 @@ Yes |
Yes |
No |
- 1100 |
+ 1101 |
@@ -4388,7 +4388,7 @@ Yes |
Yes |
Yes |
- 411 |
+ 414 |
@@ -4849,7 +4849,7 @@ Yes |
Yes |
Yes |
- 2537 |
+ 2538 |
@@ -4916,7 +4916,7 @@ Yes |
Yes |
No |
- 1335 |
+ 1336 |
@@ -5073,7 +5073,7 @@ No |
Yes |
No |
- 744 |
+ 747 |
@@ -5096,7 +5096,7 @@ Yes |
Yes |
No |
- 1798 |
+ 1804 |
@@ -5119,7 +5119,7 @@ No |
Yes |
No |
- 127 |
+ 128 |
@@ -5234,7 +5234,7 @@ No |
Yes |
No |
- 74838 |
+ 74872 |
@@ -5257,7 +5257,7 @@ Yes |
Yes |
No |
- 26224 |
+ 26226 |
@@ -5280,7 +5280,7 @@ Yes |
Yes |
No |
- 23176 |
+ 23182 |
@@ -5301,7 +5301,7 @@ No |
Yes |
No |
- 7372 |
+ 7371 |
@@ -5322,7 +5322,7 @@ No |
Yes |
No |
- 6196 |
+ 6200 |
@@ -5345,7 +5345,7 @@ No |
Yes |
No |
- 5813 |
+ 5821 |
@@ -5368,7 +5368,7 @@ Yes |
Yes |
Yes |
- 5369 |
+ 5377 |
@@ -5389,7 +5389,7 @@ No |
Yes |
No |
- 4039 |
+ 4042 |
@@ -5410,7 +5410,7 @@ No |
Yes |
No |
- 3811 |
+ 3812 |
@@ -5475,7 +5475,7 @@ Yes |
Yes |
No |
- 2606 |
+ 2607 |
@@ -5519,7 +5519,7 @@ No |
Yes |
No |
- 2217 |
+ 2218 |
@@ -5540,7 +5540,7 @@ No |
Yes |
No |
- 2193 |
+ 2196 |
@@ -5561,7 +5561,7 @@ No |
Yes |
No |
- 2060 |
+ 2061 |
@@ -5582,7 +5582,7 @@ No |
Yes |
No |
- 1641 |
+ 1642 |
@@ -5605,7 +5605,7 @@ No |
Yes |
No |
- 1399 |
+ 1401 |
@@ -5647,7 +5647,7 @@ No |
Yes |
No |
- 1257 |
+ 1260 |
@@ -5710,7 +5710,7 @@ No |
Yes |
No |
- 868 |
+ 870 |
@@ -5731,7 +5731,7 @@ No |
Yes |
No |
- 889 |
+ 894 |
@@ -5752,7 +5752,7 @@ No |
Yes |
No |
- 818 |
+ 820 |
@@ -5773,7 +5773,7 @@ No |
Yes |
No |
- 799 |
+ 800 |
@@ -5794,7 +5794,7 @@ No |
Yes |
No |
- 796 |
+ 797 |
@@ -5880,7 +5880,7 @@ Yes |
Yes |
No |
- 662 |
+ 663 |
@@ -5922,7 +5922,7 @@ Yes |
Yes |
No |
- 609 |
+ 611 |
@@ -6048,7 +6048,7 @@ No |
Yes |
No |
- 485 |
+ 486 |
@@ -6090,7 +6090,7 @@ No |
Yes |
No |
- 456 |
+ 455 |
@@ -6279,7 +6279,7 @@ No |
Yes |
No |
- 359 |
+ 360 |
@@ -6321,7 +6321,7 @@ No |
Yes |
No |
- 356 |
+ 357 |
@@ -6640,7 +6640,7 @@ No |
Yes |
No |
- 238 |
+ 239 |
@@ -6850,7 +6850,7 @@ No |
Yes |
No |
- 202 |
+ 203 |
@@ -7041,7 +7041,7 @@ No |
Yes |
No |
- 181 |
+ 182 |
@@ -7146,7 +7146,7 @@ No |
Yes |
No |
- 171 |
+ 170 |
@@ -7379,7 +7379,7 @@ No |
Yes |
No |
- 126 |
+ 127 |
@@ -7400,7 +7400,7 @@ No |
Yes |
No |
- 139 |
+ 141 |
@@ -7694,7 +7694,7 @@ No |
Yes |
No |
- 106 |
+ 107 |
@@ -8261,7 +8261,7 @@ Yes |
Yes |
No |
- 61 |
+ 62 |
@@ -8473,7 +8473,7 @@ No |
Yes |
No |
- 53 |
+ 54 |
@@ -9130,7 +9130,7 @@ No |
Yes |
No |
- 36 |
+ 37 |
@@ -9846,7 +9846,7 @@ No |
Yes |
No |
- 23 |
+ 24 |
@@ -10581,7 +10581,7 @@ Yes |
Yes |
No |
- 18 |
+ 19 |
@@ -10982,7 +10982,7 @@ No |
Yes |
No |
- 16 |
+ 17 |
@@ -12857,7 +12857,7 @@ No |
Yes |
No |
- 8 |
+ 9 |
@@ -23882,7 +23882,7 @@ No |
Yes |
No |
- N/A |
+ 1 |
@@ -24701,7 +24701,7 @@ Yes |
Yes |
No |
- 2096 |
+ 2099 |
@@ -24997,7 +24997,7 @@ No |
Yes |
Yes |
- 2754 |
+ 2759 |
@@ -26702,7 +26702,7 @@ Yes |
Yes |
Yes |
- 617 |
+ 616 |
@@ -26786,7 +26786,7 @@ No |
Yes |
No |
- 25528 |
+ 25548 |
@@ -27332,7 +27332,7 @@ Yes |
Yes |
No |
- 129 |
+ 130 |
@@ -30907,7 +30907,7 @@ No |
No |
No |
- 7372 |
+ 7371 |
@@ -30930,7 +30930,7 @@ No |
No |
No |
- 1371 |
+ 1372 |
@@ -31243,7 +31243,7 @@ No |
No |
No |
- 3574 |
+ 3575 |
@@ -33391,7 +33391,7 @@ Rate My OpenAPI (link)
|
Stars |
- 193 |
+ 195 |
Watchers |
@@ -33407,7 +33407,7 @@ Rate My OpenAPI (link)
Last Updated |
- 2024-08-21T15:16:47Z |
+ 2024-08-22T17:53:36Z |
Archived |
@@ -33442,7 +33442,7 @@ Scalar (link)
Stars |
- 5466 |
+ 5477 |
Watchers |
@@ -33458,7 +33458,7 @@ Scalar (link)
Last Updated |
- 2024-08-21T23:25:04Z |
+ 2024-08-23T02:02:32Z |
Archived |
@@ -33646,7 +33646,7 @@ ReDoc (link)
Stars |
- 23176 |
+ 23182 |
Watchers |
@@ -33662,7 +33662,7 @@ ReDoc (link)
Last Updated |
- 2024-08-22T01:27:04Z |
+ 2024-08-23T03:18:45Z |
Archived |
@@ -33799,7 +33799,7 @@ OpenAPI-UI (link)
Stars |
- 601 |
+ 603 |
Watchers |
@@ -33815,7 +33815,7 @@ OpenAPI-UI (link)
Last Updated |
- 2024-08-22T01:58:56Z |
+ 2024-08-22T11:36:36Z |
Archived |
@@ -33901,7 +33901,7 @@ optic diff (link)
Stars |
- 1336 |
+ 1337 |
Watchers |
@@ -33917,7 +33917,7 @@ optic diff (link)
Last Updated |
- 2024-08-20T09:01:35Z |
+ 2024-08-22T15:57:14Z |
Archived |
@@ -34615,15 +34615,15 @@ OpenAPI Generator (link)
Stars |
- 21078 |
+ 21096 |
Watchers |
- 220 |
+ 219 |
Forks |
- 6390 |
+ 6393 |
Created |
@@ -34631,7 +34631,7 @@ OpenAPI Generator (link)
Last Updated |
- 2024-08-22T03:25:53Z |
+ 2024-08-23T02:12:29Z |
Archived |
@@ -34717,7 +34717,7 @@ Kiota Api Client Generator (link)
Stars |
- 2757 |
+ 2765 |
Watchers |
@@ -34725,7 +34725,7 @@ Kiota Api Client Generator (link)
Forks |
- 185 |
+ 186 |
Created |
@@ -34733,7 +34733,7 @@ Kiota Api Client Generator (link)
Last Updated |
- 2024-08-22T03:20:02Z |
+ 2024-08-23T02:01:41Z |
Archived |
@@ -35074,7 +35074,7 @@ Swagger Editor (link)
Stars |
- 8832 |
+ 8833 |
Watchers |
@@ -35090,7 +35090,7 @@ Swagger Editor (link)
Last Updated |
- 2024-08-21T18:06:47Z |
+ 2024-08-22T15:25:11Z |
Archived |
@@ -35396,7 +35396,7 @@ Apicurio Studio (link)
Last Updated |
- 2024-08-21T05:46:47Z |
+ 2024-08-22T13:40:51Z |
Archived |
@@ -35839,11 +35839,11 @@ Prism (link)
Stars |
- 4185 |
+ 4191 |
Watchers |
- 54 |
+ 55 |
Forks |
@@ -35855,7 +35855,7 @@ Prism (link)
Last Updated |
- 2024-08-21T23:55:59Z |
+ 2024-08-23T00:18:23Z |
Archived |
@@ -35890,7 +35890,7 @@ Microcks (link)
Stars |
- 1315 |
+ 1317 |
Watchers |
@@ -35906,7 +35906,7 @@ Microcks (link)
Last Updated |
- 2024-08-21T13:22:09Z |
+ 2024-08-22T13:53:49Z |
Archived |
@@ -36212,7 +36212,7 @@ tsoa (link)
Last Updated |
- 2024-08-20T14:16:09Z |
+ 2024-08-22T10:44:08Z |
Archived |
@@ -36561,7 +36561,7 @@ Fusio (link)
Forks |
- 218 |
+ 217 |
Created |
@@ -36569,7 +36569,7 @@ Fusio (link)
Last Updated |
- 2024-08-20T15:08:19Z |
+ 2024-08-22T19:48:34Z |
Archived |
@@ -36757,7 +36757,7 @@ @nestjs/swagger (link)
Stars |
- 1658 |
+ 1659 |
Watchers |
@@ -36773,7 +36773,7 @@ @nestjs/swagger (link)
Last Updated |
- 2024-08-21T09:03:15Z |
+ 2024-08-22T05:11:50Z |
Archived |
@@ -37028,7 +37028,7 @@ portman (link)
Last Updated |
- 2024-08-19T17:22:59Z |
+ 2024-08-22T08:45:11Z |
Archived |
@@ -37063,7 +37063,7 @@ Step CI (link)
Stars |
- 1606 |
+ 1607 |
Watchers |
@@ -37079,7 +37079,7 @@ Step CI (link)
Last Updated |
- 2024-08-18T02:24:45Z |
+ 2024-08-22T18:05:29Z |
Archived |
@@ -37169,7 +37169,7 @@ Spectral (link)
Watchers |
- 32 |
+ 33 |
Forks |
@@ -37334,7 +37334,7 @@ Redocly CLI (link)
Last Updated |
- 2024-08-21T12:57:47Z |
+ 2024-08-22T07:45:33Z |
Archived |
@@ -37624,7 +37624,7 @@ APIDevTools/swagger-parser (link)
Stars |
- 1084 |
+ 1085 |
Watchers |
@@ -37640,7 +37640,7 @@ APIDevTools/swagger-parser (link)
Last Updated |
- 2024-08-21T07:30:49Z |
+ 2024-08-22T11:24:50Z |
Archived |
@@ -37879,7 +37879,7 @@ kin-openapi (link)
Stars |
- 2529 |
+ 2530 |
Watchers |
@@ -37887,7 +37887,7 @@ kin-openapi (link)
Forks |
- 422 |
+ 423 |
Created |
@@ -37895,7 +37895,7 @@ kin-openapi (link)
Last Updated |
- 2024-08-21T08:21:30Z |
+ 2024-08-22T12:26:35Z |
Archived |
@@ -38201,7 +38201,7 @@ psx-api (link)
Last Updated |
- 2024-08-21T18:04:36Z |
+ 2024-08-22T16:24:03Z |
Archived |
@@ -38236,7 +38236,7 @@ Microsoft/OpenAPI.NET (link)
Stars |
- 1371 |
+ 1372 |
Watchers |
@@ -38252,7 +38252,7 @@ Microsoft/OpenAPI.NET (link)
Last Updated |
- 2024-08-21T06:25:06Z |
+ 2024-08-22T14:41:54Z |
Archived |
@@ -38389,7 +38389,7 @@ openapi3_parser (link)
Stars |
- 89 |
+ 90 |
Watchers |
@@ -38405,7 +38405,7 @@ openapi3_parser (link)
Last Updated |
- 2024-08-15T13:30:35Z |
+ 2024-08-22T15:28:19Z |
Archived |
@@ -38507,7 +38507,7 @@ docler-labs/api-client-generator (link)
Last Updated |
- 2024-07-30T22:13:37Z |
+ 2024-08-22T09:46:56Z |
Archived |
@@ -38593,7 +38593,7 @@ go-swagger (link)
Stars |
- 9429 |
+ 9430 |
Watchers |
@@ -38609,7 +38609,7 @@ go-swagger (link)
Last Updated |
- 2024-08-22T02:34:14Z |
+ 2024-08-22T10:50:06Z |
Archived |
@@ -38746,7 +38746,7 @@ NSwag (link)
Stars |
- 6668 |
+ 6667 |
Watchers |
@@ -38762,7 +38762,7 @@ NSwag (link)
Last Updated |
- 2024-08-22T01:16:16Z |
+ 2024-08-22T14:00:26Z |
Archived |
@@ -38848,7 +38848,7 @@ Swagger-Codegen (link)
Stars |
- 16845 |
+ 16846 |
Watchers |
@@ -38856,7 +38856,7 @@ Swagger-Codegen (link)
Forks |
- 6022 |
+ 6021 |
Created |
@@ -38864,7 +38864,7 @@ Swagger-Codegen (link)
Last Updated |
- 2024-08-21T20:54:45Z |
+ 2024-08-22T13:12:00Z |
Archived |
@@ -38899,11 +38899,11 @@ Azure AutoRest (link)
Stars |
- 4570 |
+ 4571 |
Watchers |
- 876 |
+ 877 |
Forks |
@@ -38915,7 +38915,7 @@ Azure AutoRest (link)
Last Updated |
- 2024-08-20T21:30:27Z |
+ 2024-08-22T10:55:30Z |
Archived |
@@ -39052,7 +39052,7 @@ api (link)
Stars |
- 557 |
+ 558 |
Watchers |
@@ -39068,7 +39068,7 @@ api (link)
Last Updated |
- 2024-08-14T05:44:18Z |
+ 2024-08-22T08:25:07Z |
Archived |
@@ -39272,7 +39272,7 @@ Chai OpenAPI Response Validator (link)<
Last Updated |
- 2024-08-01T22:32:13Z |
+ 2024-08-22T12:05:37Z |
Archived |
@@ -39323,7 +39323,7 @@ jest-openapi (link)
Last Updated |
- 2024-08-01T22:32:13Z |
+ 2024-08-22T12:05:37Z |
Archived |
@@ -40072,7 +40072,7 @@ mitmproxy2swagger (link)
Stars |
- 4986 |
+ 4985 |
Watchers |
@@ -40088,7 +40088,7 @@ mitmproxy2swagger (link)
Last Updated |
- 2024-08-21T18:06:59Z |
+ 2024-08-22T13:07:58Z |
Archived |
@@ -40139,7 +40139,7 @@ OpenApiSpecGeneratorPlugin (link)
Last Updated |
- 2024-08-21T06:34:58Z |
+ 2024-08-22T09:24:05Z |
Archived |
@@ -40429,7 +40429,7 @@ TypeSpec (link)
Stars |
- 4062 |
+ 4065 |
Watchers |
@@ -40437,7 +40437,7 @@ TypeSpec (link)
Forks |
- 188 |
+ 187 |
Created |
@@ -40445,7 +40445,7 @@ TypeSpec (link)
Last Updated |
- 2024-08-22T03:19:01Z |
+ 2024-08-23T00:48:09Z |
Archived |
@@ -40531,7 +40531,7 @@ Restish (link)
Stars |
- 736 |
+ 737 |
Watchers |
@@ -40547,7 +40547,7 @@ Restish (link)
Last Updated |
- 2024-08-21T19:18:19Z |
+ 2024-08-22T22:25:58Z |
Archived |
@@ -40735,7 +40735,7 @@ super-linter (link)
Stars |
- 96 |
+ 97 |
Watchers |
@@ -40751,7 +40751,7 @@ super-linter (link)
Last Updated |
- 2024-07-31T03:12:30Z |
+ 2024-08-22T13:46:53Z |
Archived |
@@ -40786,7 +40786,7 @@ SpringFox (link)
Stars |
- 5921 |
+ 5922 |
Watchers |
@@ -40794,7 +40794,7 @@ SpringFox (link)
Forks |
- 1533 |
+ 1534 |
Created |
@@ -40802,7 +40802,7 @@ SpringFox (link)
Last Updated |
- 2024-08-21T12:30:36Z |
+ 2024-08-22T22:39:20Z |
Archived |
@@ -40888,7 +40888,7 @@ OWASP ZAP (link)
Stars |
- 12425 |
+ 12431 |
Watchers |
@@ -40896,7 +40896,7 @@ OWASP ZAP (link)
Forks |
- 2223 |
+ 2226 |
Created |
@@ -40904,7 +40904,7 @@ OWASP ZAP (link)
Last Updated |
- 2024-08-22T02:22:35Z |
+ 2024-08-23T01:04:12Z |
Archived |
@@ -41449,7 +41449,7 @@ Django REST Framework (link)
Stars |
- 28036 |
+ 28043 |
Watchers |
@@ -41465,7 +41465,7 @@ Django REST Framework (link)
Last Updated |
- 2024-08-22T00:00:26Z |
+ 2024-08-23T02:19:06Z |
Archived |
@@ -41806,7 +41806,7 @@ openapi-python-client (link)
Stars |
- 1232 |
+ 1234 |
Watchers |
@@ -41822,7 +41822,7 @@ openapi-python-client (link)
Last Updated |
- 2024-08-21T18:36:20Z |
+ 2024-08-22T13:14:15Z |
Archived |
@@ -41857,7 +41857,7 @@ Elements (link)
Stars |
- 1684 |
+ 1686 |
Watchers |
@@ -41873,7 +41873,7 @@ Elements (link)
Last Updated |
- 2024-08-21T17:39:43Z |
+ 2024-08-22T17:27:18Z |
Archived |
@@ -42061,7 +42061,7 @@ Cherrybomb (link)
Stars |
- 1100 |
+ 1101 |
Watchers |
@@ -42077,7 +42077,7 @@ Cherrybomb (link)
Last Updated |
- 2024-08-21T16:14:20Z |
+ 2024-08-22T22:09:59Z |
Archived |
@@ -42281,7 +42281,7 @@ kotlin-openapi3-dsl (link)
Last Updated |
- 2024-08-15T15:08:07Z |
+ 2024-08-22T14:52:32Z |
Archived |
@@ -42485,7 +42485,7 @@ Counterfact (link)
Last Updated |
- 2024-08-20T13:09:08Z |
+ 2024-08-22T15:52:36Z |
Archived |
@@ -42724,7 +42724,7 @@ libopenapi (link)
Stars |
- 411 |
+ 414 |
Watchers |
@@ -42732,7 +42732,7 @@ libopenapi (link)
Forks |
- 53 |
+ 54 |
Created |
@@ -42740,7 +42740,7 @@ libopenapi (link)
Last Updated |
- 2024-08-21T12:35:58Z |
+ 2024-08-22T13:15:15Z |
Archived |
@@ -43038,7 +43038,7 @@ openapi-comparator (link)
Forks |
- 5 |
+ 6 |
Created |
@@ -43199,7 +43199,7 @@ Specmatic (link)
Last Updated |
- 2024-08-21T12:16:11Z |
+ 2024-08-22T09:48:22Z |
Archived |
@@ -43795,7 +43795,7 @@ 🌿 Fern (link)
Stars |
- 2537 |
+ 2538 |
Watchers |
@@ -43811,7 +43811,7 @@ 🌿 Fern (link)
Last Updated |
- 2024-08-22T02:57:46Z |
+ 2024-08-23T02:11:46Z |
Archived |
@@ -43948,11 +43948,11 @@ Swift OpenAPI Generator (link)
Stars |
- 1335 |
+ 1336 |
Watchers |
- 106 |
+ 105 |
Forks |
@@ -43964,7 +43964,7 @@ Swift OpenAPI Generator (link)
Last Updated |
- 2024-08-21T08:40:37Z |
+ 2024-08-23T02:53:22Z |
Archived |
@@ -44305,7 +44305,7 @@ Fuego (link)
Stars |
- 744 |
+ 747 |
Watchers |
@@ -44321,7 +44321,7 @@ Fuego (link)
Last Updated |
- 2024-08-22T01:32:22Z |
+ 2024-08-22T23:20:11Z |
Archived |
@@ -44356,7 +44356,7 @@ Huma (link)
Stars |
- 1798 |
+ 1804 |
Watchers |
@@ -44364,7 +44364,7 @@ Huma (link)
Forks |
- 138 |
+ 139 |
Created |
@@ -44372,7 +44372,7 @@ Huma (link)
Last Updated |
- 2024-08-21T20:54:33Z |
+ 2024-08-22T16:28:48Z |
Archived |
@@ -44407,7 +44407,7 @@ openapi-merge (link)
Stars |
- 127 |
+ 128 |
Watchers |
@@ -44423,7 +44423,7 @@ openapi-merge (link)
Last Updated |
- 2024-08-19T14:53:08Z |
+ 2024-08-22T13:12:47Z |
Archived |
@@ -44627,7 +44627,7 @@ widdershins (link)
Last Updated |
- 2024-08-21T13:17:32Z |
+ 2024-08-22T10:54:03Z |
Archived |
@@ -44662,7 +44662,7 @@ FastAPI (link)
Stars |
- 74838 |
+ 74872 |
Watchers |
@@ -44670,7 +44670,7 @@ FastAPI (link)
Forks |
- 6298 |
+ 6297 |
Created |
@@ -44678,7 +44678,7 @@ FastAPI (link)
Last Updated |
- 2024-08-22T03:28:53Z |
+ 2024-08-23T02:53:43Z |
Archived |
@@ -44713,7 +44713,7 @@ swagger-ui (link)
Stars |
- 26224 |
+ 26226 |
Watchers |
@@ -44721,7 +44721,7 @@ swagger-ui (link)
Forks |
- 8900 |
+ 8901 |
Created |
@@ -44729,7 +44729,7 @@ swagger-ui (link)
Last Updated |
- 2024-08-22T03:18:06Z |
+ 2024-08-23T01:28:24Z |
Archived |
@@ -44764,7 +44764,7 @@ Redoc (link)
Stars |
- 23176 |
+ 23182 |
Watchers |
@@ -44780,7 +44780,7 @@ Redoc (link)
Last Updated |
- 2024-08-22T01:27:04Z |
+ 2024-08-23T03:18:45Z |
Archived |
@@ -44815,7 +44815,7 @@ swagger-core (link)
Stars |
- 7372 |
+ 7371 |
Watchers |
@@ -44831,7 +44831,7 @@ swagger-core (link)
Last Updated |
- 2024-08-21T12:41:56Z |
+ 2024-08-22T20:58:00Z |
Archived |
@@ -44866,7 +44866,7 @@ mockoon (link)
Stars |
- 6196 |
+ 6200 |
Watchers |
@@ -44882,7 +44882,7 @@ mockoon (link)
Last Updated |
- 2024-08-21T14:31:50Z |
+ 2024-08-22T18:13:14Z |
Archived |
@@ -44917,11 +44917,11 @@ OpenAPI Server Code Generator (oapi-cod
Stars |
- 5813 |
+ 5821 |
Watchers |
- 37 |
+ 36 |
Forks |
@@ -44933,7 +44933,7 @@ OpenAPI Server Code Generator (oapi-cod
Last Updated |
- 2024-08-21T22:24:46Z |
+ 2024-08-23T03:26:20Z |
Archived |
@@ -44968,7 +44968,7 @@ OpenAPI TypeScript (link)
Stars |
- 5369 |
+ 5377 |
Watchers |
@@ -44976,7 +44976,7 @@ OpenAPI TypeScript (link)
Forks |
- 444 |
+ 445 |
Created |
@@ -44984,7 +44984,7 @@ OpenAPI TypeScript (link)
Last Updated |
- 2024-08-22T03:14:14Z |
+ 2024-08-23T03:17:03Z |
Archived |
@@ -45019,7 +45019,7 @@ knife4j (link)
Stars |
- 4039 |
+ 4042 |
Watchers |
@@ -45027,7 +45027,7 @@ knife4j (link)
Forks |
- 612 |
+ 613 |
Created |
@@ -45035,7 +45035,7 @@ knife4j (link)
Last Updated |
- 2024-08-21T12:40:15Z |
+ 2024-08-23T01:58:44Z |
Archived |
@@ -45070,7 +45070,7 @@ openapi-directory (link)
Stars |
- 3811 |
+ 3812 |
Watchers |
@@ -45086,7 +45086,7 @@ openapi-directory (link)
Last Updated |
- 2024-08-21T08:47:53Z |
+ 2024-08-22T12:47:44Z |
Archived |
@@ -45223,7 +45223,7 @@ swagger-js (link)
Stars |
- 2606 |
+ 2607 |
Watchers |
@@ -45239,7 +45239,7 @@ swagger-js (link)
Last Updated |
- 2024-08-20T23:06:53Z |
+ 2024-08-22T23:50:28Z |
Archived |
@@ -45325,7 +45325,7 @@ Schemathesis (link)
Stars |
- 2217 |
+ 2218 |
Watchers |
@@ -45341,7 +45341,7 @@ Schemathesis (link)
Last Updated |
- 2024-08-21T14:33:04Z |
+ 2024-08-22T19:25:16Z |
Archived |
@@ -45376,7 +45376,7 @@ msgspec (link)
Stars |
- 2193 |
+ 2196 |
Watchers |
@@ -45384,7 +45384,7 @@ msgspec (link)
Forks |
- 62 |
+ 63 |
Created |
@@ -45392,7 +45392,7 @@ msgspec (link)
Last Updated |
- 2024-08-21T23:10:23Z |
+ 2024-08-23T00:47:52Z |
Archived |
@@ -45427,7 +45427,7 @@ gnostic (link)
Stars |
- 2060 |
+ 2061 |
Watchers |
@@ -45443,7 +45443,7 @@ gnostic (link)
Last Updated |
- 2024-08-20T05:59:13Z |
+ 2024-08-23T03:28:33Z |
Archived |
@@ -45478,7 +45478,7 @@ rapidoc (link)
Stars |
- 1641 |
+ 1642 |
Watchers |
@@ -45494,7 +45494,7 @@ rapidoc (link)
Last Updated |
- 2024-08-21T11:26:49Z |
+ 2024-08-22T06:44:48Z |
Archived |
@@ -45529,7 +45529,7 @@ OpenAPI-gui (link)
Stars |
- 1399 |
+ 1401 |
Watchers |
@@ -45545,7 +45545,7 @@ OpenAPI-gui (link)
Last Updated |
- 2024-08-20T13:45:17Z |
+ 2024-08-22T14:43:10Z |
Archived |
@@ -45631,7 +45631,7 @@ ogen (link)
Stars |
- 1257 |
+ 1260 |
Watchers |
@@ -45647,7 +45647,7 @@ ogen (link)
Last Updated |
- 2024-08-21T15:04:16Z |
+ 2024-08-23T03:09:59Z |
Archived |
@@ -45784,7 +45784,7 @@ zod-to-openapi (link)
Stars |
- 868 |
+ 870 |
Watchers |
@@ -45800,7 +45800,7 @@ zod-to-openapi (link)
Last Updated |
- 2024-08-21T15:53:01Z |
+ 2024-08-22T15:14:38Z |
Archived |
@@ -45835,7 +45835,7 @@ openapi-ts (link)
Stars |
- 889 |
+ 894 |
Watchers |
@@ -45851,7 +45851,7 @@ openapi-ts (link)
Last Updated |
- 2024-08-21T17:37:54Z |
+ 2024-08-23T01:16:11Z |
Archived |
@@ -45886,7 +45886,7 @@ json-schema-validator (link)
Stars |
- 818 |
+ 820 |
Watchers |
@@ -45902,7 +45902,7 @@ json-schema-validator (link)
Last Updated |
- 2024-08-14T16:17:32Z |
+ 2024-08-22T12:50:07Z |
Archived |
@@ -45937,7 +45937,7 @@ openapi-diff (link)
Stars |
- 799 |
+ 800 |
Watchers |
@@ -45953,7 +45953,7 @@ openapi-diff (link)
Last Updated |
- 2024-08-21T18:20:30Z |
+ 2024-08-22T10:23:12Z |
Archived |
@@ -45988,7 +45988,7 @@ studio (link)
Stars |
- 796 |
+ 797 |
Watchers |
@@ -46004,7 +46004,7 @@ studio (link)
Last Updated |
- 2024-08-21T14:15:12Z |
+ 2024-08-22T07:33:23Z |
Archived |
@@ -46192,7 +46192,7 @@ openapi.tools (link)
Stars |
- 662 |
+ 663 |
Watchers |
@@ -46208,7 +46208,7 @@ openapi.tools (link)
Last Updated |
- 2024-08-16T05:14:24Z |
+ 2024-08-22T13:16:51Z |
Archived |
@@ -46294,7 +46294,7 @@ openapi-tui (link)
Stars |
- 609 |
+ 611 |
Watchers |
@@ -46310,7 +46310,7 @@ openapi-tui (link)
Last Updated |
- 2024-08-20T10:36:51Z |
+ 2024-08-22T08:46:44Z |
Archived |
@@ -46600,7 +46600,7 @@ openapi-codegen (link)
Stars |
- 485 |
+ 486 |
Watchers |
@@ -46616,7 +46616,7 @@ openapi-codegen (link)
Last Updated |
- 2024-08-22T03:08:31Z |
+ 2024-08-22T21:37:27Z |
Archived |
@@ -46702,7 +46702,7 @@ swagger-autogen (link)
Stars |
- 456 |
+ 455 |
Watchers |
@@ -46718,7 +46718,7 @@ swagger-autogen (link)
Last Updated |
- 2024-08-21T23:54:35Z |
+ 2024-08-22T13:24:23Z |
Archived |
@@ -47024,7 +47024,7 @@ safrs (link)
Last Updated |
- 2024-08-21T03:23:01Z |
+ 2024-08-22T15:13:59Z |
Archived |
@@ -47161,7 +47161,7 @@ fastapi-plugins (link)
Stars |
- 359 |
+ 360 |
Watchers |
@@ -47177,7 +47177,7 @@ fastapi-plugins (link)
Last Updated |
- 2024-08-18T05:18:53Z |
+ 2024-08-22T12:08:49Z |
Archived |
@@ -47263,7 +47263,7 @@ fastapi-clean-example (link)
Stars |
- 356 |
+ 357 |
Watchers |
@@ -47271,7 +47271,7 @@ fastapi-clean-example (link)
Forks |
- 51 |
+ 52 |
Created |
@@ -47279,7 +47279,7 @@ fastapi-clean-example (link)
Last Updated |
- 2024-08-21T16:17:43Z |
+ 2024-08-22T11:38:39Z |
Archived |
@@ -47789,7 +47789,7 @@ esmerald (link)
Last Updated |
- 2024-08-21T12:27:52Z |
+ 2024-08-22T17:54:11Z |
Archived |
@@ -47942,7 +47942,7 @@ znai (link)
Last Updated |
- 2024-08-21T06:26:50Z |
+ 2024-08-22T11:12:58Z |
Archived |
@@ -48028,7 +48028,7 @@ apibrew (link)
Stars |
- 238 |
+ 239 |
Watchers |
@@ -48044,7 +48044,7 @@ apibrew (link)
Last Updated |
- 2024-08-21T09:58:00Z |
+ 2024-08-22T08:27:16Z |
Archived |
@@ -48185,7 +48185,7 @@ thema (link)
Watchers |
- 141 |
+ 140 |
Forks |
@@ -48538,7 +48538,7 @@ openapi.net.odata (link)
Stars |
- 202 |
+ 203 |
Watchers |
@@ -48554,7 +48554,7 @@ openapi.net.odata (link)
Last Updated |
- 2024-08-21T06:24:16Z |
+ 2024-08-22T09:11:54Z |
Archived |
@@ -48809,7 +48809,7 @@ openapivalidators (link)
Last Updated |
- 2024-08-01T22:32:13Z |
+ 2024-08-22T12:05:37Z |
Archived |
@@ -48997,7 +48997,7 @@ flask-openapi3 (link)
Stars |
- 181 |
+ 182 |
Watchers |
@@ -49013,7 +49013,7 @@ flask-openapi3 (link)
Last Updated |
- 2024-08-20T00:50:42Z |
+ 2024-08-22T09:22:02Z |
Archived |
@@ -49115,7 +49115,7 @@ speakeasy (link)
Last Updated |
- 2024-08-21T12:46:24Z |
+ 2024-08-22T14:14:38Z |
Archived |
@@ -49252,7 +49252,7 @@ refitter (link)
Stars |
- 171 |
+ 170 |
Watchers |
@@ -49268,7 +49268,7 @@ refitter (link)
Last Updated |
- 2024-08-21T12:53:31Z |
+ 2024-08-22T12:17:15Z |
Archived |
@@ -49813,7 +49813,7 @@ apistos (link)
Stars |
- 126 |
+ 127 |
Watchers |
@@ -49829,7 +49829,7 @@ apistos (link)
Last Updated |
- 2024-08-13T09:19:48Z |
+ 2024-08-22T13:18:06Z |
Archived |
@@ -49864,7 +49864,7 @@ typescript-backend-toolkit (link)
Stars |
- 139 |
+ 141 |
Watchers |
@@ -49880,7 +49880,7 @@ typescript-backend-toolkit (link)
Last Updated |
- 2024-08-21T20:08:04Z |
+ 2024-08-22T16:38:57Z |
Archived |
@@ -49931,7 +49931,7 @@ light-rest-4j (link)
Last Updated |
- 2024-08-17T18:35:04Z |
+ 2024-08-22T19:11:12Z |
Archived |
@@ -50390,7 +50390,7 @@ learn.openapis.org (link)
Last Updated |
- 2024-08-21T17:22:54Z |
+ 2024-08-22T13:06:29Z |
Archived |
@@ -50578,7 +50578,7 @@ moclojer (link)
Stars |
- 106 |
+ 107 |
Watchers |
@@ -50594,7 +50594,7 @@ moclojer (link)
Last Updated |
- 2024-08-21T14:35:07Z |
+ 2024-08-23T00:55:52Z |
Archived |
@@ -50798,7 +50798,7 @@ tools.openapis.org (link)
Last Updated |
- 2024-08-21T03:27:59Z |
+ 2024-08-22T03:30:47Z |
Archived |
@@ -50900,7 +50900,7 @@ openapi-to-plantuml (link)
Last Updated |
- 2024-08-20T02:31:28Z |
+ 2024-08-22T17:34:10Z |
Archived |
@@ -50994,7 +50994,7 @@ oatpp-swagger (link)
Forks |
- 51 |
+ 52 |
Created |
@@ -51716,7 +51716,7 @@ apidom (link)
Last Updated |
- 2024-08-21T23:41:43Z |
+ 2024-08-22T23:50:57Z |
Archived |
@@ -51955,7 +51955,7 @@ spectral-owasp-ruleset (link)
Stars |
- 61 |
+ 62 |
Watchers |
@@ -51971,7 +51971,7 @@ spectral-owasp-ruleset (link)
Last Updated |
- 2024-08-19T10:45:17Z |
+ 2024-08-22T19:44:19Z |
Archived |
@@ -52465,7 +52465,7 @@ sideko (link)
Stars |
- 53 |
+ 54 |
Watchers |
@@ -52481,7 +52481,7 @@ sideko (link)
Last Updated |
- 2024-08-20T03:52:05Z |
+ 2024-08-22T17:55:52Z |
Archived |
@@ -53042,7 +53042,7 @@ swagger-editor-validate (link)
Last Updated |
- 2024-08-21T04:25:22Z |
+ 2024-08-22T04:29:38Z |
Archived |
@@ -53144,7 +53144,7 @@ openapi (link)
Last Updated |
- 2024-08-21T23:32:31Z |
+ 2024-08-22T07:45:43Z |
Archived |
@@ -53195,7 +53195,7 @@ javalin-openapi (link)
Last Updated |
- 2024-08-12T11:15:44Z |
+ 2024-08-22T22:37:58Z |
Archived |
@@ -53501,7 +53501,7 @@ backbase-openapi-tools (link)
Last Updated |
- 2024-08-21T14:31:08Z |
+ 2024-08-22T09:18:19Z |
Archived |
@@ -54046,7 +54046,7 @@ openapiclientwizard (link)
Stars |
- 36 |
+ 37 |
Watchers |
@@ -54062,7 +54062,7 @@ openapiclientwizard (link)
Last Updated |
- 2024-08-01T07:01:16Z |
+ 2024-08-22T15:23:41Z |
Archived |
@@ -54470,7 +54470,7 @@ openapi-examples (link)
Last Updated |
- 2024-08-21T00:22:35Z |
+ 2024-08-22T22:39:46Z |
Archived |
@@ -55286,7 +55286,7 @@ hei-admin-api (link)
Last Updated |
- 2024-08-21T12:23:48Z |
+ 2024-08-22T07:59:01Z |
Archived |
@@ -55780,7 +55780,7 @@ sbt-openapi-generator (link)
Stars |
- 23 |
+ 24 |
Watchers |
@@ -55796,7 +55796,7 @@ sbt-openapi-generator (link)
Last Updated |
- 2024-07-27T17:56:29Z |
+ 2024-08-23T00:37:06Z |
Archived |
@@ -57122,7 +57122,7 @@ mockoon.com (link)
Last Updated |
- 2024-08-21T15:13:30Z |
+ 2024-08-22T14:21:34Z |
Archived |
@@ -57565,7 +57565,7 @@ redocly-cli-cookbook (link)
Stars |
- 18 |
+ 19 |
Watchers |
@@ -57581,7 +57581,7 @@ redocly-cli-cookbook (link)
Last Updated |
- 2024-08-20T07:59:01Z |
+ 2024-08-22T07:22:26Z |
Archived |
@@ -57887,7 +57887,7 @@ api-typing (link)
Last Updated |
- 2024-08-20T07:51:30Z |
+ 2024-08-22T07:47:30Z |
Archived |
@@ -58534,7 +58534,7 @@ apibake-js (link)
Stars |
- 16 |
+ 17 |
Watchers |
@@ -58550,7 +58550,7 @@ apibake-js (link)
Last Updated |
- 2024-08-08T07:08:04Z |
+ 2024-08-22T13:02:59Z |
Archived |
@@ -63073,7 +63073,7 @@ lapidary (link)
Stars |
- 8 |
+ 9 |
Watchers |
@@ -63089,7 +63089,7 @@ lapidary (link)
Last Updated |
- 2024-08-18T17:31:54Z |
+ 2024-08-22T18:52:04Z |
Archived |
@@ -69005,7 +69005,7 @@ nest-starter (link)
Last Updated |
- 2024-06-27T21:11:53Z |
+ 2024-08-22T22:03:28Z |
Archived |
@@ -70586,7 +70586,7 @@ openapi-server-url-templating (link)
Last Updated |
- 2024-08-20T22:27:53Z |
+ 2024-08-22T22:36:20Z |
Archived |
@@ -74411,7 +74411,7 @@ openapi-path-templating (link)
Last Updated |
- 2024-08-20T18:14:52Z |
+ 2024-08-22T18:46:23Z |
Archived |
@@ -78899,7 +78899,7 @@ python-openapi-generator-rust (link)
Last Updated |
- 2024-08-21T20:04:11Z |
+ 2024-08-22T17:25:39Z |
Archived |
@@ -79409,11 +79409,11 @@ puzzle (link)
Last Updated |
- 2024-05-12T16:02:03Z |
+ 2024-08-23T00:42:40Z |
Archived |
- No |
+ Yes |
Language |
@@ -89848,7 +89848,7 @@ lapidary-render (link)
Stars |
- N/A |
+ 1 |
Watchers |
@@ -89864,7 +89864,7 @@ lapidary-render (link)
Last Updated |
- 2024-08-18T11:11:58Z |
+ 2024-08-22T18:52:17Z |
Archived |
@@ -91837,7 +91837,7 @@ utoipa (link)
Stars |
- 2096 |
+ 2099 |
Watchers |
@@ -91853,7 +91853,7 @@ utoipa (link)
Last Updated |
- 2024-08-21T23:20:44Z |
+ 2024-08-23T01:32:32Z |
Archived |
@@ -91904,7 +91904,7 @@ train-travel-api (link)
Last Updated |
- 2024-08-15T14:18:10Z |
+ 2024-08-22T13:43:47Z |
Archived |
@@ -91947,7 +91947,7 @@ oas_rails (link)
Forks |
- 0 |
+ 1 |
Created |
@@ -92551,7 +92551,7 @@ orval (link)
Stars |
- 2754 |
+ 2759 |
Watchers |
@@ -92559,7 +92559,7 @@ orval (link)
Forks |
- 310 |
+ 311 |
Created |
@@ -92567,7 +92567,7 @@ orval (link)
Last Updated |
- 2024-08-21T19:30:53Z |
+ 2024-08-22T19:30:27Z |
Archived |
@@ -92822,7 +92822,7 @@ frontend (link)
Last Updated |
- 2024-08-12T00:46:09Z |
+ 2024-08-23T00:28:29Z |
Archived |
@@ -94046,7 +94046,7 @@ EvoMaster (link)
Last Updated |
- 2024-08-20T18:22:19Z |
+ 2024-08-22T19:31:38Z |
Archived |
@@ -96682,7 +96682,7 @@ kubb (link)
Stars |
- 617 |
+ 616 |
Watchers |
@@ -96698,7 +96698,7 @@ kubb (link)
Last Updated |
- 2024-08-21T04:42:15Z |
+ 2024-08-22T07:21:49Z |
Archived |
@@ -96886,7 +96886,7 @@ full-stack-fastapi-template (link)
Stars |
- 25528 |
+ 25548 |
Watchers |
@@ -96894,7 +96894,7 @@ full-stack-fastapi-template (link)
Forks |
- 4382 |
+ 4389 |
Created |
@@ -96902,7 +96902,7 @@ full-stack-fastapi-template (link)
Last Updated |
- 2024-08-22T01:38:45Z |
+ 2024-08-23T03:21:51Z |
Archived |
@@ -98126,7 +98126,7 @@ spring-boot-starter-tomcat (link)
Last Updated |
- 2024-08-14T18:07:10Z |
+ 2024-08-22T22:51:54Z |
Archived |
@@ -98212,7 +98212,7 @@ UI Bakery (link)
Stars |
- 129 |
+ 130 |
Watchers |
@@ -98228,7 +98228,7 @@ UI Bakery (link)
Last Updated |
- 2024-08-17T15:54:00Z |
+ 2024-08-22T16:17:29Z |
Archived |
@@ -106933,7 +106933,7 @@ swagger-models (link)
Stars |
- 7372 |
+ 7371 |
Watchers |
@@ -106949,7 +106949,7 @@ swagger-models (link)
Last Updated |
- 2024-08-21T12:41:56Z |
+ 2024-08-22T20:58:00Z |
Archived |
@@ -106984,7 +106984,7 @@ Microsoft.OpenApi.net (link)
Stars |
- 1371 |
+ 1372 |
Watchers |
@@ -107000,7 +107000,7 @@ Microsoft.OpenApi.net (link)
Last Updated |
- 2024-08-21T06:25:06Z |
+ 2024-08-22T14:41:54Z |
Archived |
@@ -107749,7 +107749,7 @@ PHP-CRUD-API (link)
Stars |
- 3574 |
+ 3575 |
Watchers |
@@ -107765,7 +107765,7 @@ PHP-CRUD-API (link)
Last Updated |
- 2024-08-20T09:57:48Z |
+ 2024-08-22T15:32:24Z |
Archived |
@@ -110315,7 +110315,7 @@ soda (link)
Last Updated |
- 2024-07-31T05:40:31Z |
+ 2024-08-22T09:08:56Z |
Archived |
@@ -110876,7 +110876,7 @@ go-doudou (link)
Last Updated |
- 2024-08-21T15:34:41Z |
+ 2024-08-22T15:22:22Z |
Archived |
diff --git a/docs/categories/auto-generators.html b/docs/categories/auto-generators.html
index f857bc99..c4ece6d2 100644
--- a/docs/categories/auto-generators.html
+++ b/docs/categories/auto-generators.html
@@ -91,7 +91,7 @@ No
Yes |
No |
- 4986 |
+ 4985 |
@@ -250,7 +250,7 @@ No |
Yes |
No |
- 4062 |
+ 4065 |
@@ -273,7 +273,7 @@ No |
Yes |
No |
- 744 |
+ 747 |
@@ -296,7 +296,7 @@ Yes |
Yes |
No |
- 1798 |
+ 1804 |
@@ -350,7 +350,7 @@ mitmproxy2swagger (link)
|
Stars |
- 4986 |
+ 4985 |
Watchers |
@@ -366,7 +366,7 @@ mitmproxy2swagger (link)
Last Updated |
- 2024-08-21T18:06:59Z |
+ 2024-08-22T13:07:58Z |
Archived |
@@ -417,7 +417,7 @@ OpenApiSpecGeneratorPlugin (link)
Last Updated |
- 2024-08-21T06:34:58Z |
+ 2024-08-22T09:24:05Z |
Archived |
@@ -707,7 +707,7 @@ TypeSpec (link)
Stars |
- 4062 |
+ 4065 |
Watchers |
@@ -715,7 +715,7 @@ TypeSpec (link)
Forks |
- 188 |
+ 187 |
Created |
@@ -723,7 +723,7 @@ TypeSpec (link)
Last Updated |
- 2024-08-22T03:19:01Z |
+ 2024-08-23T00:48:09Z |
Archived |
@@ -758,7 +758,7 @@ Fuego (link)
Stars |
- 744 |
+ 747 |
Watchers |
@@ -774,7 +774,7 @@ Fuego (link)
Last Updated |
- 2024-08-22T01:32:22Z |
+ 2024-08-22T23:20:11Z |
Archived |
@@ -809,7 +809,7 @@ Huma (link)
Stars |
- 1798 |
+ 1804 |
Watchers |
@@ -817,7 +817,7 @@ Huma (link)
Forks |
- 138 |
+ 139 |
Created |
@@ -825,7 +825,7 @@ Huma (link)
Last Updated |
- 2024-08-21T20:54:33Z |
+ 2024-08-22T16:28:48Z |
Archived |
diff --git a/docs/categories/code-generators.html b/docs/categories/code-generators.html
index 5db13932..6a772ef5 100644
--- a/docs/categories/code-generators.html
+++ b/docs/categories/code-generators.html
@@ -114,7 +114,7 @@ No
Yes |
Yes |
- 21078 |
+ 21096 |
@@ -160,7 +160,7 @@ No |
Yes |
Yes |
- 2757 |
+ 2765 |
@@ -248,7 +248,7 @@ No |
Yes |
Yes |
- 16845 |
+ 16846 |
@@ -340,7 +340,7 @@ Yes |
Yes |
Yes |
- 2537 |
+ 2538 |
@@ -386,7 +386,7 @@ Yes |
Yes |
No |
- 26224 |
+ 26226 |
@@ -407,7 +407,7 @@ No |
Yes |
No |
- 7372 |
+ 7371 |
@@ -430,7 +430,7 @@ No |
Yes |
No |
- 5813 |
+ 5821 |
@@ -451,7 +451,7 @@ Yes |
Yes |
No |
- 2606 |
+ 2607 |
@@ -1381,7 +1381,7 @@ No |
Yes |
Yes |
- 2754 |
+ 2759 |
@@ -1591,7 +1591,7 @@ Yes |
Yes |
Yes |
- 617 |
+ 616 |
@@ -1868,7 +1868,7 @@ No |
No |
No |
- 7372 |
+ 7371 |
@@ -2168,15 +2168,15 @@ OpenAPI Generator (link)
|
Stars |
- 21078 |
+ 21096 |
Watchers |
- 220 |
+ 219 |
Forks |
- 6390 |
+ 6393 |
Created |
@@ -2184,7 +2184,7 @@ OpenAPI Generator (link)
Last Updated |
- 2024-08-22T03:25:53Z |
+ 2024-08-23T02:12:29Z |
Archived |
@@ -2270,7 +2270,7 @@ Kiota Api Client Generator (link)
Stars |
- 2757 |
+ 2765 |
Watchers |
@@ -2278,7 +2278,7 @@ Kiota Api Client Generator (link)
Forks |
- 185 |
+ 186 |
Created |
@@ -2286,7 +2286,7 @@ Kiota Api Client Generator (link)
Last Updated |
- 2024-08-22T03:20:02Z |
+ 2024-08-23T02:01:41Z |
Archived |
@@ -2474,7 +2474,7 @@ Swagger-Codegen (link)
Stars |
- 16845 |
+ 16846 |
Watchers |
@@ -2482,7 +2482,7 @@ Swagger-Codegen (link)
Forks |
- 6022 |
+ 6021 |
Created |
@@ -2490,7 +2490,7 @@ Swagger-Codegen (link)
Last Updated |
- 2024-08-21T20:54:45Z |
+ 2024-08-22T13:12:00Z |
Archived |
@@ -2678,7 +2678,7 @@ 🌿 Fern (link)
Stars |
- 2537 |
+ 2538 |
Watchers |
@@ -2694,7 +2694,7 @@ 🌿 Fern (link)
Last Updated |
- 2024-08-22T02:57:46Z |
+ 2024-08-23T02:11:46Z |
Archived |
@@ -2780,7 +2780,7 @@ swagger-ui (link)
Stars |
- 26224 |
+ 26226 |
Watchers |
@@ -2788,7 +2788,7 @@ swagger-ui (link)
Forks |
- 8900 |
+ 8901 |
Created |
@@ -2796,7 +2796,7 @@ swagger-ui (link)
Last Updated |
- 2024-08-22T03:18:06Z |
+ 2024-08-23T01:28:24Z |
Archived |
@@ -2831,7 +2831,7 @@ swagger-core (link)
Stars |
- 7372 |
+ 7371 |
Watchers |
@@ -2847,7 +2847,7 @@ swagger-core (link)
Last Updated |
- 2024-08-21T12:41:56Z |
+ 2024-08-22T20:58:00Z |
Archived |
@@ -2882,11 +2882,11 @@ OpenAPI Server Code Generator (oapi-cod
Stars |
- 5813 |
+ 5821 |
Watchers |
- 37 |
+ 36 |
Forks |
@@ -2898,7 +2898,7 @@ OpenAPI Server Code Generator (oapi-cod
Last Updated |
- 2024-08-21T22:24:46Z |
+ 2024-08-23T03:26:20Z |
Archived |
@@ -2933,7 +2933,7 @@ swagger-js (link)
Stars |
- 2606 |
+ 2607 |
Watchers |
@@ -2949,7 +2949,7 @@ swagger-js (link)
Last Updated |
- 2024-08-20T23:06:53Z |
+ 2024-08-22T23:50:28Z |
Archived |
@@ -3561,7 +3561,7 @@ hei-admin-api (link)
Last Updated |
- 2024-08-21T12:23:48Z |
+ 2024-08-22T07:59:01Z |
Archived |
@@ -5177,7 +5177,7 @@ orval (link)
Stars |
- 2754 |
+ 2759 |
Watchers |
@@ -5185,7 +5185,7 @@ orval (link)
Forks |
- 310 |
+ 311 |
Created |
@@ -5193,7 +5193,7 @@ orval (link)
Last Updated |
- 2024-08-21T19:30:53Z |
+ 2024-08-22T19:30:27Z |
Archived |
@@ -5687,7 +5687,7 @@ kubb (link)
Stars |
- 617 |
+ 616 |
Watchers |
@@ -5703,7 +5703,7 @@ kubb (link)
Last Updated |
- 2024-08-21T04:42:15Z |
+ 2024-08-22T07:21:49Z |
Archived |
@@ -6350,7 +6350,7 @@ swagger-models (link)
Stars |
- 7372 |
+ 7371 |
Watchers |
@@ -6366,7 +6366,7 @@ swagger-models (link)
Last Updated |
- 2024-08-21T12:41:56Z |
+ 2024-08-22T20:58:00Z |
Archived |
diff --git a/docs/categories/converters.html b/docs/categories/converters.html
index b8e9161d..c25df266 100644
--- a/docs/categories/converters.html
+++ b/docs/categories/converters.html
@@ -244,7 +244,7 @@ No
Yes |
No |
- 1606 |
+ 1607 |
@@ -267,7 +267,7 @@ No |
No |
Yes |
- 9429 |
+ 9430 |
@@ -336,7 +336,7 @@ Yes |
Yes |
Yes |
- 557 |
+ 558 |
@@ -470,7 +470,7 @@ Yes |
Yes |
No |
- 1232 |
+ 1234 |
@@ -558,7 +558,7 @@ No |
Yes |
No |
- 127 |
+ 128 |
@@ -581,7 +581,7 @@ Yes |
Yes |
Yes |
- 5369 |
+ 5377 |
@@ -602,7 +602,7 @@ No |
Yes |
No |
- 2060 |
+ 2061 |
@@ -1463,7 +1463,7 @@ portman (link)
|
Last Updated |
- 2024-08-19T17:22:59Z |
+ 2024-08-22T08:45:11Z |
Archived |
@@ -1498,7 +1498,7 @@ Step CI (link)
Stars |
- 1606 |
+ 1607 |
Watchers |
@@ -1514,7 +1514,7 @@ Step CI (link)
Last Updated |
- 2024-08-18T02:24:45Z |
+ 2024-08-22T18:05:29Z |
Archived |
@@ -1549,7 +1549,7 @@ go-swagger (link)
Stars |
- 9429 |
+ 9430 |
Watchers |
@@ -1565,7 +1565,7 @@ go-swagger (link)
Last Updated |
- 2024-08-22T02:34:14Z |
+ 2024-08-22T10:50:06Z |
Archived |
@@ -1702,7 +1702,7 @@ api (link)
Stars |
- 557 |
+ 558 |
Watchers |
@@ -1718,7 +1718,7 @@ api (link)
Last Updated |
- 2024-08-14T05:44:18Z |
+ 2024-08-22T08:25:07Z |
Archived |
@@ -2008,7 +2008,7 @@ openapi-python-client (link)
Stars |
- 1232 |
+ 1234 |
Watchers |
@@ -2024,7 +2024,7 @@ openapi-python-client (link)
Last Updated |
- 2024-08-21T18:36:20Z |
+ 2024-08-22T13:14:15Z |
Archived |
@@ -2212,7 +2212,7 @@ openapi-merge (link)
Stars |
- 127 |
+ 128 |
Watchers |
@@ -2228,7 +2228,7 @@ openapi-merge (link)
Last Updated |
- 2024-08-19T14:53:08Z |
+ 2024-08-22T13:12:47Z |
Archived |
@@ -2263,7 +2263,7 @@ OpenAPI TypeScript (link)
Stars |
- 5369 |
+ 5377 |
Watchers |
@@ -2271,7 +2271,7 @@ OpenAPI TypeScript (link)
Forks |
- 444 |
+ 445 |
Created |
@@ -2279,7 +2279,7 @@ OpenAPI TypeScript (link)
Last Updated |
- 2024-08-22T03:14:14Z |
+ 2024-08-23T03:17:03Z |
Archived |
@@ -2314,7 +2314,7 @@ gnostic (link)
Stars |
- 2060 |
+ 2061 |
Watchers |
@@ -2330,7 +2330,7 @@ gnostic (link)
Last Updated |
- 2024-08-20T05:59:13Z |
+ 2024-08-23T03:28:33Z |
Archived |
diff --git a/docs/categories/data-validators.html b/docs/categories/data-validators.html
index e10b5be3..31d21894 100644
--- a/docs/categories/data-validators.html
+++ b/docs/categories/data-validators.html
@@ -156,7 +156,7 @@ No
Yes |
No |
- 1606 |
+ 1607 |
@@ -288,7 +288,7 @@ No |
Yes |
Yes |
- 2529 |
+ 2530 |
@@ -642,7 +642,7 @@ No |
Yes |
No |
- 744 |
+ 747 |
@@ -665,7 +665,7 @@ Yes |
Yes |
No |
- 1798 |
+ 1804 |
@@ -2014,7 +2014,7 @@ tsoa (link)
|
Last Updated |
- 2024-08-20T14:16:09Z |
+ 2024-08-22T10:44:08Z |
Archived |
@@ -2100,7 +2100,7 @@ Step CI (link)
Stars |
- 1606 |
+ 1607 |
Watchers |
@@ -2116,7 +2116,7 @@ Step CI (link)
Last Updated |
- 2024-08-18T02:24:45Z |
+ 2024-08-22T18:05:29Z |
Archived |
@@ -2406,7 +2406,7 @@ kin-openapi (link)
Stars |
- 2529 |
+ 2530 |
Watchers |
@@ -2414,7 +2414,7 @@ kin-openapi (link)
Forks |
- 422 |
+ 423 |
Created |
@@ -2422,7 +2422,7 @@ kin-openapi (link)
Last Updated |
- 2024-08-21T08:21:30Z |
+ 2024-08-22T12:26:35Z |
Archived |
@@ -3222,7 +3222,7 @@ Fuego (link)
Stars |
- 744 |
+ 747 |
Watchers |
@@ -3238,7 +3238,7 @@ Fuego (link)
Last Updated |
- 2024-08-22T01:32:22Z |
+ 2024-08-22T23:20:11Z |
Archived |
@@ -3273,7 +3273,7 @@ Huma (link)
Stars |
- 1798 |
+ 1804 |
Watchers |
@@ -3281,7 +3281,7 @@ Huma (link)
Forks |
- 138 |
+ 139 |
Created |
@@ -3289,7 +3289,7 @@ Huma (link)
Last Updated |
- 2024-08-21T20:54:33Z |
+ 2024-08-22T16:28:48Z |
Archived |
diff --git a/docs/categories/description-validators.html b/docs/categories/description-validators.html
index 4c3cf347..ba7cb18d 100644
--- a/docs/categories/description-validators.html
+++ b/docs/categories/description-validators.html
@@ -131,7 +131,7 @@ Yes
Yes |
No |
- 193 |
+ 195 |
@@ -371,7 +371,7 @@ Yes |
Yes |
Yes |
- 557 |
+ 558 |
@@ -413,7 +413,7 @@ No |
Yes |
Yes |
- 96 |
+ 97 |
@@ -436,7 +436,7 @@ Yes |
Yes |
No |
- 1100 |
+ 1101 |
@@ -572,7 +572,7 @@ No |
Yes |
No |
- 796 |
+ 797 |
@@ -593,7 +593,7 @@ Yes |
Yes |
No |
- 662 |
+ 663 |
@@ -803,7 +803,7 @@ No |
Yes |
No |
- 23 |
+ 24 |
@@ -1759,7 +1759,7 @@ Rate My OpenAPI (link)
|
Stars |
- 193 |
+ 195 |
Watchers |
@@ -1775,7 +1775,7 @@ Rate My OpenAPI (link)
Last Updated |
- 2024-08-21T15:16:47Z |
+ 2024-08-22T17:53:36Z |
Archived |
@@ -1967,7 +1967,7 @@ Spectral (link)
Watchers |
- 32 |
+ 33 |
Forks |
@@ -2132,7 +2132,7 @@ Redocly CLI (link)
Last Updated |
- 2024-08-21T12:57:47Z |
+ 2024-08-22T07:45:33Z |
Archived |
@@ -2320,7 +2320,7 @@ api (link)
Stars |
- 557 |
+ 558 |
Watchers |
@@ -2336,7 +2336,7 @@ api (link)
Last Updated |
- 2024-08-14T05:44:18Z |
+ 2024-08-22T08:25:07Z |
Archived |
@@ -2422,7 +2422,7 @@ super-linter (link)
Stars |
- 96 |
+ 97 |
Watchers |
@@ -2438,7 +2438,7 @@ super-linter (link)
Last Updated |
- 2024-07-31T03:12:30Z |
+ 2024-08-22T13:46:53Z |
Archived |
@@ -2473,7 +2473,7 @@ Cherrybomb (link)
Stars |
- 1100 |
+ 1101 |
Watchers |
@@ -2489,7 +2489,7 @@ Cherrybomb (link)
Last Updated |
- 2024-08-21T16:14:20Z |
+ 2024-08-22T22:09:59Z |
Archived |
@@ -2779,7 +2779,7 @@ studio (link)
Stars |
- 796 |
+ 797 |
Watchers |
@@ -2795,7 +2795,7 @@ studio (link)
Last Updated |
- 2024-08-21T14:15:12Z |
+ 2024-08-22T07:33:23Z |
Archived |
@@ -2830,7 +2830,7 @@ openapi.tools (link)
Stars |
- 662 |
+ 663 |
Watchers |
@@ -2846,7 +2846,7 @@ openapi.tools (link)
Last Updated |
- 2024-08-16T05:14:24Z |
+ 2024-08-22T13:16:51Z |
Archived |
@@ -3340,7 +3340,7 @@ sbt-openapi-generator (link)
Stars |
- 23 |
+ 24 |
Watchers |
@@ -3356,7 +3356,7 @@ sbt-openapi-generator (link)
Last Updated |
- 2024-07-27T17:56:29Z |
+ 2024-08-23T00:37:06Z |
Archived |
diff --git a/docs/categories/documentation.html b/docs/categories/documentation.html
index 0a8bf70a..d7e107d4 100644
--- a/docs/categories/documentation.html
+++ b/docs/categories/documentation.html
@@ -188,7 +188,7 @@ Yes
Yes |
Yes |
- 5466 |
+ 5477 |
@@ -255,7 +255,7 @@ Yes |
Yes |
Yes |
- 23176 |
+ 23182 |
@@ -318,7 +318,7 @@ Yes |
Yes |
Yes |
- 601 |
+ 603 |
@@ -653,7 +653,7 @@ Yes |
Yes |
No |
- 736 |
+ 737 |
@@ -718,7 +718,7 @@ Yes |
Yes |
Yes |
- 1684 |
+ 1686 |
@@ -955,7 +955,7 @@ Yes |
Yes |
Yes |
- 2537 |
+ 2538 |
@@ -1066,7 +1066,7 @@ No |
Yes |
No |
- 1641 |
+ 1642 |
@@ -2607,7 +2607,7 @@ Scalar (link)
|
Stars |
- 5466 |
+ 5477 |
Watchers |
@@ -2623,7 +2623,7 @@ Scalar (link)
Last Updated |
- 2024-08-21T23:25:04Z |
+ 2024-08-23T02:02:32Z |
Archived |
@@ -2760,7 +2760,7 @@ ReDoc (link)
Stars |
- 23176 |
+ 23182 |
Watchers |
@@ -2776,7 +2776,7 @@ ReDoc (link)
Last Updated |
- 2024-08-22T01:27:04Z |
+ 2024-08-23T03:18:45Z |
Archived |
@@ -2913,7 +2913,7 @@ OpenAPI-UI (link)
Stars |
- 601 |
+ 603 |
Watchers |
@@ -2929,7 +2929,7 @@ OpenAPI-UI (link)
Last Updated |
- 2024-08-22T01:58:56Z |
+ 2024-08-22T11:36:36Z |
Archived |
@@ -3439,7 +3439,7 @@ Redocly CLI (link)
Last Updated |
- 2024-08-21T12:57:47Z |
+ 2024-08-22T07:45:33Z |
Archived |
@@ -3678,7 +3678,7 @@ Restish (link)
Stars |
- 736 |
+ 737 |
Watchers |
@@ -3694,7 +3694,7 @@ Restish (link)
Last Updated |
- 2024-08-21T19:18:19Z |
+ 2024-08-22T22:25:58Z |
Archived |
@@ -3831,7 +3831,7 @@ Elements (link)
Stars |
- 1684 |
+ 1686 |
Watchers |
@@ -3847,7 +3847,7 @@ Elements (link)
Last Updated |
- 2024-08-21T17:39:43Z |
+ 2024-08-22T17:27:18Z |
Archived |
@@ -4392,7 +4392,7 @@ 🌿 Fern (link)
Stars |
- 2537 |
+ 2538 |
Watchers |
@@ -4408,7 +4408,7 @@ 🌿 Fern (link)
Last Updated |
- 2024-08-22T02:57:46Z |
+ 2024-08-23T02:11:46Z |
Archived |
@@ -4612,7 +4612,7 @@ widdershins (link)
Last Updated |
- 2024-08-21T13:17:32Z |
+ 2024-08-22T10:54:03Z |
Archived |
@@ -4647,7 +4647,7 @@ rapidoc (link)
Stars |
- 1641 |
+ 1642 |
Watchers |
@@ -4663,7 +4663,7 @@ rapidoc (link)
Last Updated |
- 2024-08-21T11:26:49Z |
+ 2024-08-22T06:44:48Z |
Archived |
@@ -4765,7 +4765,7 @@ znai (link)
Last Updated |
- 2024-08-21T06:26:50Z |
+ 2024-08-22T11:12:58Z |
Archived |
diff --git a/docs/categories/dsl.html b/docs/categories/dsl.html
index 66080cfc..6203de81 100644
--- a/docs/categories/dsl.html
+++ b/docs/categories/dsl.html
@@ -584,7 +584,7 @@ kotlin-openapi3-dsl (link)
Last Updated |
- 2024-08-15T15:08:07Z |
+ 2024-08-22T14:52:32Z |
Archived |
diff --git a/docs/categories/editors.html b/docs/categories/editors.html
index 484bdd7c..cf0690fd 100644
--- a/docs/categories/editors.html
+++ b/docs/categories/editors.html
@@ -91,7 +91,7 @@ No
Yes |
No |
- 1399 |
+ 1401 |
@@ -261,7 +261,7 @@ OpenAPI-gui (link)
|
Stars |
- 1399 |
+ 1401 |
Watchers |
@@ -277,7 +277,7 @@ OpenAPI-gui (link)
Last Updated |
- 2024-08-20T13:45:17Z |
+ 2024-08-22T14:43:10Z |
Archived |
diff --git a/docs/categories/gateway.html b/docs/categories/gateway.html
index d085d1a0..975f0024 100644
--- a/docs/categories/gateway.html
+++ b/docs/categories/gateway.html
@@ -353,7 +353,7 @@ Fusio (link)
Forks |
- 218 |
+ 217 |
Created |
@@ -361,7 +361,7 @@ Fusio (link)
Last Updated |
- 2024-08-20T15:08:19Z |
+ 2024-08-22T19:48:34Z |
Archived |
diff --git a/docs/categories/gui-editors.html b/docs/categories/gui-editors.html
index 361f3c8f..68c383bd 100644
--- a/docs/categories/gui-editors.html
+++ b/docs/categories/gui-editors.html
@@ -688,7 +688,7 @@ Apicurio Studio (link)
Last Updated |
- 2024-08-21T05:46:47Z |
+ 2024-08-22T13:40:51Z |
Archived |
diff --git a/docs/categories/learning.html b/docs/categories/learning.html
index 38071b05..821663be 100644
--- a/docs/categories/learning.html
+++ b/docs/categories/learning.html
@@ -91,7 +91,7 @@ Yes
Yes |
No |
- 1336 |
+ 1337 |
@@ -346,7 +346,7 @@ optic diff (link)
|
Stars |
- 1336 |
+ 1337 |
Watchers |
@@ -362,7 +362,7 @@ optic diff (link)
Last Updated |
- 2024-08-20T09:01:35Z |
+ 2024-08-22T15:57:14Z |
Archived |
diff --git a/docs/categories/low-level-tooling.html b/docs/categories/low-level-tooling.html
index 23d05133..0caa054e 100644
--- a/docs/categories/low-level-tooling.html
+++ b/docs/categories/low-level-tooling.html
@@ -156,7 +156,7 @@ No
Yes |
No |
- 202 |
+ 203 |
@@ -1298,7 +1298,7 @@ No |
No |
No |
- 7372 |
+ 7371 |
@@ -1321,7 +1321,7 @@ No |
No |
No |
- 1371 |
+ 1372 |
@@ -1614,7 +1614,7 @@ openapi.net.odata (link)
|
Stars |
- 202 |
+ 203 |
Watchers |
@@ -1630,7 +1630,7 @@ openapi.net.odata (link)
Last Updated |
- 2024-08-21T06:24:16Z |
+ 2024-08-22T09:11:54Z |
Archived |
@@ -1681,7 +1681,7 @@ light-rest-4j (link)
Last Updated |
- 2024-08-17T18:35:04Z |
+ 2024-08-22T19:11:12Z |
Archived |
@@ -1826,7 +1826,7 @@ oatpp-swagger (link)
Forks |
- 51 |
+ 52 |
Created |
@@ -1936,7 +1936,7 @@ openapi (link)
Last Updated |
- 2024-08-21T23:32:31Z |
+ 2024-08-22T07:45:43Z |
Archived |
@@ -4368,7 +4368,7 @@ swagger-models (link)
Stars |
- 7372 |
+ 7371 |
Watchers |
@@ -4384,7 +4384,7 @@ swagger-models (link)
Last Updated |
- 2024-08-21T12:41:56Z |
+ 2024-08-22T20:58:00Z |
Archived |
@@ -4419,7 +4419,7 @@ Microsoft.OpenApi.net (link)
Stars |
- 1371 |
+ 1372 |
Watchers |
@@ -4435,7 +4435,7 @@ Microsoft.OpenApi.net (link)
Last Updated |
- 2024-08-21T06:25:06Z |
+ 2024-08-22T14:41:54Z |
Archived |
diff --git a/docs/categories/mock-testing.html b/docs/categories/mock-testing.html
index 56549410..a162d736 100644
--- a/docs/categories/mock-testing.html
+++ b/docs/categories/mock-testing.html
@@ -91,7 +91,7 @@ Yes
Yes |
Yes |
- 1315 |
+ 1317 |
@@ -145,7 +145,7 @@ Microcks (link)
|
Stars |
- 1315 |
+ 1317 |
Watchers |
@@ -161,7 +161,7 @@ Microcks (link)
Last Updated |
- 2024-08-21T13:22:09Z |
+ 2024-08-22T13:53:49Z |
Archived |
diff --git a/docs/categories/mock.html b/docs/categories/mock.html
index 5f939111..9ab2dd1e 100644
--- a/docs/categories/mock.html
+++ b/docs/categories/mock.html
@@ -110,7 +110,7 @@ Yes
Yes |
Yes |
- 4185 |
+ 4191 |
@@ -543,7 +543,7 @@ No |
Yes |
Yes |
- 2754 |
+ 2759 |
@@ -821,11 +821,11 @@ Prism (link)
|
Stars |
- 4185 |
+ 4191 |
Watchers |
- 54 |
+ 55 |
Forks |
@@ -837,7 +837,7 @@ Prism (link)
Last Updated |
- 2024-08-21T23:55:59Z |
+ 2024-08-23T00:18:23Z |
Archived |
@@ -1296,7 +1296,7 @@ Counterfact (link)
Last Updated |
- 2024-08-20T13:09:08Z |
+ 2024-08-22T15:52:36Z |
Archived |
@@ -1449,7 +1449,7 @@ Specmatic (link)
Last Updated |
- 2024-08-21T12:16:11Z |
+ 2024-08-22T09:48:22Z |
Archived |
@@ -1841,7 +1841,7 @@ orval (link)
Stars |
- 2754 |
+ 2759 |
Watchers |
@@ -1849,7 +1849,7 @@ orval (link)
Forks |
- 310 |
+ 311 |
Created |
@@ -1857,7 +1857,7 @@ orval (link)
Last Updated |
- 2024-08-21T19:30:53Z |
+ 2024-08-22T19:30:27Z |
Archived |
diff --git a/docs/categories/parsers.html b/docs/categories/parsers.html
index b60d53d7..acad5790 100644
--- a/docs/categories/parsers.html
+++ b/docs/categories/parsers.html
@@ -91,7 +91,7 @@ Yes
Yes |
Yes |
- 23176 |
+ 23182 |
@@ -608,7 +608,7 @@ No |
Yes |
Yes |
- 1084 |
+ 1085 |
@@ -719,7 +719,7 @@ No |
Yes |
Yes |
- 2529 |
+ 2530 |
@@ -828,7 +828,7 @@ No |
Yes |
Yes |
- 1371 |
+ 1372 |
@@ -895,7 +895,7 @@ No |
Yes |
No |
- 89 |
+ 90 |
@@ -918,7 +918,7 @@ No |
No |
Yes |
- 9429 |
+ 9430 |
@@ -1010,7 +1010,7 @@ Yes |
Yes |
Yes |
- 557 |
+ 558 |
@@ -1414,7 +1414,7 @@ Yes |
Yes |
No |
- 1232 |
+ 1234 |
@@ -1552,7 +1552,7 @@ Yes |
Yes |
Yes |
- 411 |
+ 414 |
@@ -1778,7 +1778,7 @@ No |
Yes |
No |
- 127 |
+ 128 |
@@ -1824,7 +1824,7 @@ Yes |
Yes |
No |
- 23176 |
+ 23182 |
@@ -1866,7 +1866,7 @@ No |
Yes |
No |
- 1257 |
+ 1260 |
@@ -1908,7 +1908,7 @@ No |
Yes |
No |
- 868 |
+ 870 |
@@ -1929,7 +1929,7 @@ No |
Yes |
No |
- 818 |
+ 820 |
@@ -1950,7 +1950,7 @@ No |
Yes |
No |
- 799 |
+ 800 |
@@ -2034,7 +2034,7 @@ Yes |
Yes |
No |
- 609 |
+ 611 |
@@ -2097,7 +2097,7 @@ No |
Yes |
No |
- 456 |
+ 455 |
@@ -2351,7 +2351,7 @@ No |
Yes |
No |
- 202 |
+ 203 |
@@ -2500,7 +2500,7 @@ No |
Yes |
No |
- 171 |
+ 170 |
@@ -2607,7 +2607,7 @@ No |
Yes |
No |
- 126 |
+ 127 |
@@ -4316,7 +4316,7 @@ No |
Yes |
No |
- 16 |
+ 17 |
@@ -5013,7 +5013,7 @@ No |
Yes |
No |
- 8 |
+ 9 |
@@ -8646,7 +8646,7 @@ No |
Yes |
No |
- N/A |
+ 1 |
@@ -8940,7 +8940,7 @@ Yes |
Yes |
No |
- 2096 |
+ 2099 |
@@ -10456,7 +10456,7 @@ No |
No |
No |
- 1371 |
+ 1372 |
@@ -10944,7 +10944,7 @@ ReDoc (link)
|
Stars |
- 23176 |
+ 23182 |
Watchers |
@@ -10960,7 +10960,7 @@ ReDoc (link)
Last Updated |
- 2024-08-22T01:27:04Z |
+ 2024-08-23T03:18:45Z |
Archived |
@@ -11827,7 +11827,7 @@ tsoa (link)
Last Updated |
- 2024-08-20T14:16:09Z |
+ 2024-08-22T10:44:08Z |
Archived |
@@ -12117,7 +12117,7 @@ APIDevTools/swagger-parser (link)
Stars |
- 1084 |
+ 1085 |
Watchers |
@@ -12133,7 +12133,7 @@ APIDevTools/swagger-parser (link)
Last Updated |
- 2024-08-21T07:30:49Z |
+ 2024-08-22T11:24:50Z |
Archived |
@@ -12372,7 +12372,7 @@ kin-openapi (link)
Stars |
- 2529 |
+ 2530 |
Watchers |
@@ -12380,7 +12380,7 @@ kin-openapi (link)
Forks |
- 422 |
+ 423 |
Created |
@@ -12388,7 +12388,7 @@ kin-openapi (link)
Last Updated |
- 2024-08-21T08:21:30Z |
+ 2024-08-22T12:26:35Z |
Archived |
@@ -12592,7 +12592,7 @@ psx-api (link)
Last Updated |
- 2024-08-21T18:04:36Z |
+ 2024-08-22T16:24:03Z |
Archived |
@@ -12627,7 +12627,7 @@ Microsoft/OpenAPI.NET (link)
Stars |
- 1371 |
+ 1372 |
Watchers |
@@ -12643,7 +12643,7 @@ Microsoft/OpenAPI.NET (link)
Last Updated |
- 2024-08-21T06:25:06Z |
+ 2024-08-22T14:41:54Z |
Archived |
@@ -12780,7 +12780,7 @@ openapi3_parser (link)
Stars |
- 89 |
+ 90 |
Watchers |
@@ -12796,7 +12796,7 @@ openapi3_parser (link)
Last Updated |
- 2024-08-15T13:30:35Z |
+ 2024-08-22T15:28:19Z |
Archived |
@@ -12831,7 +12831,7 @@ go-swagger (link)
Stars |
- 9429 |
+ 9430 |
Watchers |
@@ -12847,7 +12847,7 @@ go-swagger (link)
Last Updated |
- 2024-08-22T02:34:14Z |
+ 2024-08-22T10:50:06Z |
Archived |
@@ -13035,7 +13035,7 @@ api (link)
Stars |
- 557 |
+ 558 |
Watchers |
@@ -13051,7 +13051,7 @@ api (link)
Last Updated |
- 2024-08-14T05:44:18Z |
+ 2024-08-22T08:25:07Z |
Archived |
@@ -13953,7 +13953,7 @@ openapi-python-client (link)
Stars |
- 1232 |
+ 1234 |
Watchers |
@@ -13969,7 +13969,7 @@ openapi-python-client (link)
Last Updated |
- 2024-08-21T18:36:20Z |
+ 2024-08-22T13:14:15Z |
Archived |
@@ -14122,7 +14122,7 @@ kotlin-openapi3-dsl (link)
Last Updated |
- 2024-08-15T15:08:07Z |
+ 2024-08-22T14:52:32Z |
Archived |
@@ -14259,7 +14259,7 @@ libopenapi (link)
Stars |
- 411 |
+ 414 |
Watchers |
@@ -14267,7 +14267,7 @@ libopenapi (link)
Forks |
- 53 |
+ 54 |
Created |
@@ -14275,7 +14275,7 @@ libopenapi (link)
Last Updated |
- 2024-08-21T12:35:58Z |
+ 2024-08-22T13:15:15Z |
Archived |
@@ -14420,7 +14420,7 @@ openapi-comparator (link)
Forks |
- 5 |
+ 6 |
Created |
@@ -14769,7 +14769,7 @@ openapi-merge (link)
Stars |
- 127 |
+ 128 |
Watchers |
@@ -14785,7 +14785,7 @@ openapi-merge (link)
Last Updated |
- 2024-08-19T14:53:08Z |
+ 2024-08-22T13:12:47Z |
Archived |
@@ -14836,7 +14836,7 @@ widdershins (link)
Last Updated |
- 2024-08-21T13:17:32Z |
+ 2024-08-22T10:54:03Z |
Archived |
@@ -14871,7 +14871,7 @@ Redoc (link)
Stars |
- 23176 |
+ 23182 |
Watchers |
@@ -14887,7 +14887,7 @@ Redoc (link)
Last Updated |
- 2024-08-22T01:27:04Z |
+ 2024-08-23T03:18:45Z |
Archived |
@@ -14973,7 +14973,7 @@ ogen (link)
Stars |
- 1257 |
+ 1260 |
Watchers |
@@ -14989,7 +14989,7 @@ ogen (link)
Last Updated |
- 2024-08-21T15:04:16Z |
+ 2024-08-23T03:09:59Z |
Archived |
@@ -15075,7 +15075,7 @@ zod-to-openapi (link)
Stars |
- 868 |
+ 870 |
Watchers |
@@ -15091,7 +15091,7 @@ zod-to-openapi (link)
Last Updated |
- 2024-08-21T15:53:01Z |
+ 2024-08-22T15:14:38Z |
Archived |
@@ -15126,7 +15126,7 @@ json-schema-validator (link)
Stars |
- 818 |
+ 820 |
Watchers |
@@ -15142,7 +15142,7 @@ json-schema-validator (link)
Last Updated |
- 2024-08-14T16:17:32Z |
+ 2024-08-22T12:50:07Z |
Archived |
@@ -15177,7 +15177,7 @@ openapi-diff (link)
Stars |
- 799 |
+ 800 |
Watchers |
@@ -15193,7 +15193,7 @@ openapi-diff (link)
Last Updated |
- 2024-08-21T18:20:30Z |
+ 2024-08-22T10:23:12Z |
Archived |
@@ -15381,7 +15381,7 @@ openapi-tui (link)
Stars |
- 609 |
+ 611 |
Watchers |
@@ -15397,7 +15397,7 @@ openapi-tui (link)
Last Updated |
- 2024-08-20T10:36:51Z |
+ 2024-08-22T08:46:44Z |
Archived |
@@ -15534,7 +15534,7 @@ swagger-autogen (link)
Stars |
- 456 |
+ 455 |
Watchers |
@@ -15550,7 +15550,7 @@ swagger-autogen (link)
Last Updated |
- 2024-08-21T23:54:35Z |
+ 2024-08-22T13:24:23Z |
Archived |
@@ -16146,7 +16146,7 @@ openapi.net.odata (link)
Stars |
- 202 |
+ 203 |
Watchers |
@@ -16162,7 +16162,7 @@ openapi.net.odata (link)
Last Updated |
- 2024-08-21T06:24:16Z |
+ 2024-08-22T09:11:54Z |
Archived |
@@ -16468,7 +16468,7 @@ speakeasy (link)
Last Updated |
- 2024-08-21T12:46:24Z |
+ 2024-08-22T14:14:38Z |
Archived |
@@ -16503,7 +16503,7 @@ refitter (link)
Stars |
- 171 |
+ 170 |
Watchers |
@@ -16519,7 +16519,7 @@ refitter (link)
Last Updated |
- 2024-08-21T12:53:31Z |
+ 2024-08-22T12:17:15Z |
Archived |
@@ -16758,7 +16758,7 @@ apistos (link)
Stars |
- 126 |
+ 127 |
Watchers |
@@ -16774,7 +16774,7 @@ apistos (link)
Last Updated |
- 2024-08-13T09:19:48Z |
+ 2024-08-22T13:18:06Z |
Archived |
@@ -16825,7 +16825,7 @@ light-rest-4j (link)
Last Updated |
- 2024-08-17T18:35:04Z |
+ 2024-08-22T19:11:12Z |
Archived |
@@ -17131,7 +17131,7 @@ learn.openapis.org (link)
Last Updated |
- 2024-08-21T17:22:54Z |
+ 2024-08-22T13:06:29Z |
Archived |
@@ -17794,7 +17794,7 @@ apidom (link)
Last Updated |
- 2024-08-21T23:41:43Z |
+ 2024-08-22T23:50:57Z |
Archived |
@@ -18457,7 +18457,7 @@ openapi (link)
Last Updated |
- 2024-08-21T23:32:31Z |
+ 2024-08-22T07:45:43Z |
Archived |
@@ -19120,7 +19120,7 @@ openapi-examples (link)
Last Updated |
- 2024-08-21T00:22:35Z |
+ 2024-08-22T22:39:46Z |
Archived |
@@ -20548,7 +20548,7 @@ api-typing (link)
Last Updated |
- 2024-08-20T07:51:30Z |
+ 2024-08-22T07:47:30Z |
Archived |
@@ -20889,7 +20889,7 @@ apibake-js (link)
Stars |
- 16 |
+ 17 |
Watchers |
@@ -20905,7 +20905,7 @@ apibake-js (link)
Last Updated |
- 2024-08-08T07:08:04Z |
+ 2024-08-22T13:02:59Z |
Archived |
@@ -22572,7 +22572,7 @@ lapidary (link)
Stars |
- 8 |
+ 9 |
Watchers |
@@ -22588,7 +22588,7 @@ lapidary (link)
Last Updated |
- 2024-08-18T17:31:54Z |
+ 2024-08-22T18:52:04Z |
Archived |
@@ -25036,7 +25036,7 @@ openapi-server-url-templating (link)
Last Updated |
- 2024-08-20T22:27:53Z |
+ 2024-08-22T22:36:20Z |
Archived |
@@ -26362,7 +26362,7 @@ openapi-path-templating (link)
Last Updated |
- 2024-08-20T18:14:52Z |
+ 2024-08-22T18:46:23Z |
Archived |
@@ -27739,7 +27739,7 @@ python-openapi-generator-rust (link)
Last Updated |
- 2024-08-21T20:04:11Z |
+ 2024-08-22T17:25:39Z |
Archived |
@@ -31395,7 +31395,7 @@ lapidary-render (link)
Stars |
- N/A |
+ 1 |
Watchers |
@@ -31411,7 +31411,7 @@ lapidary-render (link)
Last Updated |
- 2024-08-18T11:11:58Z |
+ 2024-08-22T18:52:17Z |
Archived |
@@ -32109,7 +32109,7 @@ utoipa (link)
Stars |
- 2096 |
+ 2099 |
Watchers |
@@ -32125,7 +32125,7 @@ utoipa (link)
Last Updated |
- 2024-08-21T23:20:44Z |
+ 2024-08-23T01:32:32Z |
Archived |
@@ -32168,7 +32168,7 @@ oas_rails (link)
Forks |
- 0 |
+ 1 |
Created |
@@ -35781,7 +35781,7 @@ Microsoft.OpenApi.net (link)
Stars |
- 1371 |
+ 1372 |
Watchers |
@@ -35797,7 +35797,7 @@ Microsoft.OpenApi.net (link)
Last Updated |
- 2024-08-21T06:25:06Z |
+ 2024-08-22T14:41:54Z |
Archived |
@@ -36664,7 +36664,7 @@ soda (link)
Last Updated |
- 2024-07-31T05:40:31Z |
+ 2024-08-22T09:08:56Z |
Archived |
diff --git a/docs/categories/sdk.html b/docs/categories/sdk.html
index 92ebc126..34561cd4 100644
--- a/docs/categories/sdk.html
+++ b/docs/categories/sdk.html
@@ -114,7 +114,7 @@ No
Yes |
Yes |
- 21078 |
+ 21096 |
@@ -160,7 +160,7 @@ No |
Yes |
Yes |
- 2757 |
+ 2765 |
@@ -206,7 +206,7 @@ Yes |
Yes |
Yes |
- 1315 |
+ 1317 |
@@ -290,7 +290,7 @@ No |
No |
Yes |
- 9429 |
+ 9430 |
@@ -359,7 +359,7 @@ No |
Yes |
Yes |
- 6668 |
+ 6667 |
@@ -403,7 +403,7 @@ No |
Yes |
Yes |
- 4570 |
+ 4571 |
@@ -514,7 +514,7 @@ No |
Yes |
Yes |
- 12425 |
+ 12431 |
@@ -742,7 +742,7 @@ Yes |
Yes |
Yes |
- 2537 |
+ 2538 |
@@ -809,7 +809,7 @@ Yes |
Yes |
No |
- 1335 |
+ 1336 |
@@ -855,7 +855,7 @@ Yes |
Yes |
Yes |
- 5369 |
+ 5377 |
@@ -876,7 +876,7 @@ No |
Yes |
No |
- 4039 |
+ 4042 |
@@ -897,7 +897,7 @@ No |
Yes |
No |
- 3811 |
+ 3812 |
@@ -918,7 +918,7 @@ No |
Yes |
No |
- 889 |
+ 894 |
@@ -1149,7 +1149,7 @@ No |
Yes |
No |
- 53 |
+ 54 |
@@ -1464,7 +1464,7 @@ No |
Yes |
No |
- 8 |
+ 9 |
@@ -3146,15 +3146,15 @@ OpenAPI Generator (link)
|
Stars |
- 21078 |
+ 21096 |
Watchers |
- 220 |
+ 219 |
Forks |
- 6390 |
+ 6393 |
Created |
@@ -3162,7 +3162,7 @@ OpenAPI Generator (link)
Last Updated |
- 2024-08-22T03:25:53Z |
+ 2024-08-23T02:12:29Z |
Archived |
@@ -3248,7 +3248,7 @@ Kiota Api Client Generator (link)
Stars |
- 2757 |
+ 2765 |
Watchers |
@@ -3256,7 +3256,7 @@ Kiota Api Client Generator (link)
Forks |
- 185 |
+ 186 |
Created |
@@ -3264,7 +3264,7 @@ Kiota Api Client Generator (link)
Last Updated |
- 2024-08-22T03:20:02Z |
+ 2024-08-23T02:01:41Z |
Archived |
@@ -3350,7 +3350,7 @@ Microcks (link)
Stars |
- 1315 |
+ 1317 |
Watchers |
@@ -3366,7 +3366,7 @@ Microcks (link)
Last Updated |
- 2024-08-21T13:22:09Z |
+ 2024-08-22T13:53:49Z |
Archived |
@@ -3468,7 +3468,7 @@ docler-labs/api-client-generator (link)
Last Updated |
- 2024-07-30T22:13:37Z |
+ 2024-08-22T09:46:56Z |
Archived |
@@ -3554,7 +3554,7 @@ go-swagger (link)
Stars |
- 9429 |
+ 9430 |
Watchers |
@@ -3570,7 +3570,7 @@ go-swagger (link)
Last Updated |
- 2024-08-22T02:34:14Z |
+ 2024-08-22T10:50:06Z |
Archived |
@@ -3707,7 +3707,7 @@ NSwag (link)
Stars |
- 6668 |
+ 6667 |
Watchers |
@@ -3723,7 +3723,7 @@ NSwag (link)
Last Updated |
- 2024-08-22T01:16:16Z |
+ 2024-08-22T14:00:26Z |
Archived |
@@ -3809,11 +3809,11 @@ Azure AutoRest (link)
Stars |
- 4570 |
+ 4571 |
Watchers |
- 876 |
+ 877 |
Forks |
@@ -3825,7 +3825,7 @@ Azure AutoRest (link)
Last Updated |
- 2024-08-20T21:30:27Z |
+ 2024-08-22T10:55:30Z |
Archived |
@@ -4064,7 +4064,7 @@ OWASP ZAP (link)
Stars |
- 12425 |
+ 12431 |
Watchers |
@@ -4072,7 +4072,7 @@ OWASP ZAP (link)
Forks |
- 2223 |
+ 2226 |
Created |
@@ -4080,7 +4080,7 @@ OWASP ZAP (link)
Last Updated |
- 2024-08-22T02:22:35Z |
+ 2024-08-23T01:04:12Z |
Archived |
@@ -4386,7 +4386,7 @@ Counterfact (link)
Last Updated |
- 2024-08-20T13:09:08Z |
+ 2024-08-22T15:52:36Z |
Archived |
@@ -4574,7 +4574,7 @@ 🌿 Fern (link)
Stars |
- 2537 |
+ 2538 |
Watchers |
@@ -4590,7 +4590,7 @@ 🌿 Fern (link)
Last Updated |
- 2024-08-22T02:57:46Z |
+ 2024-08-23T02:11:46Z |
Archived |
@@ -4727,11 +4727,11 @@ Swift OpenAPI Generator (link)
Stars |
- 1335 |
+ 1336 |
Watchers |
- 106 |
+ 105 |
Forks |
@@ -4743,7 +4743,7 @@ Swift OpenAPI Generator (link)
Last Updated |
- 2024-08-21T08:40:37Z |
+ 2024-08-23T02:53:22Z |
Archived |
@@ -4829,7 +4829,7 @@ OpenAPI TypeScript (link)
Stars |
- 5369 |
+ 5377 |
Watchers |
@@ -4837,7 +4837,7 @@ OpenAPI TypeScript (link)
Forks |
- 444 |
+ 445 |
Created |
@@ -4845,7 +4845,7 @@ OpenAPI TypeScript (link)
Last Updated |
- 2024-08-22T03:14:14Z |
+ 2024-08-23T03:17:03Z |
Archived |
@@ -4880,7 +4880,7 @@ knife4j (link)
Stars |
- 4039 |
+ 4042 |
Watchers |
@@ -4888,7 +4888,7 @@ knife4j (link)
Forks |
- 612 |
+ 613 |
Created |
@@ -4896,7 +4896,7 @@ knife4j (link)
Last Updated |
- 2024-08-21T12:40:15Z |
+ 2024-08-23T01:58:44Z |
Archived |
@@ -4931,7 +4931,7 @@ openapi-directory (link)
Stars |
- 3811 |
+ 3812 |
Watchers |
@@ -4947,7 +4947,7 @@ openapi-directory (link)
Last Updated |
- 2024-08-21T08:47:53Z |
+ 2024-08-22T12:47:44Z |
Archived |
@@ -4982,7 +4982,7 @@ openapi-ts (link)
Stars |
- 889 |
+ 894 |
Watchers |
@@ -4998,7 +4998,7 @@ openapi-ts (link)
Last Updated |
- 2024-08-21T17:37:54Z |
+ 2024-08-23T01:16:11Z |
Archived |
@@ -5406,7 +5406,7 @@ openapi-to-plantuml (link)
Last Updated |
- 2024-08-20T02:31:28Z |
+ 2024-08-22T17:34:10Z |
Archived |
@@ -5543,7 +5543,7 @@ sideko (link)
Stars |
- 53 |
+ 54 |
Watchers |
@@ -5559,7 +5559,7 @@ sideko (link)
Last Updated |
- 2024-08-20T03:52:05Z |
+ 2024-08-22T17:55:52Z |
Archived |
@@ -5712,7 +5712,7 @@ javalin-openapi (link)
Last Updated |
- 2024-08-12T11:15:44Z |
+ 2024-08-22T22:37:58Z |
Archived |
@@ -5763,7 +5763,7 @@ backbase-openapi-tools (link)
Last Updated |
- 2024-08-21T14:31:08Z |
+ 2024-08-22T09:18:19Z |
Archived |
@@ -6308,7 +6308,7 @@ lapidary (link)
Stars |
- 8 |
+ 9 |
Watchers |
@@ -6324,7 +6324,7 @@ lapidary (link)
Last Updated |
- 2024-08-18T17:31:54Z |
+ 2024-08-22T18:52:04Z |
Archived |
@@ -10149,7 +10149,7 @@ go-doudou (link)
Last Updated |
- 2024-08-21T15:34:41Z |
+ 2024-08-22T15:22:22Z |
Archived |
diff --git a/docs/categories/security.html b/docs/categories/security.html
index 5f735319..ded471b0 100644
--- a/docs/categories/security.html
+++ b/docs/categories/security.html
@@ -91,7 +91,7 @@ Yes
Yes |
No |
- 193 |
+ 195 |
@@ -240,7 +240,7 @@ No |
Yes |
Yes |
- 12425 |
+ 12431 |
@@ -380,7 +380,7 @@ Rate My OpenAPI (link)
|
Stars |
- 193 |
+ 195 |
Watchers |
@@ -396,7 +396,7 @@ Rate My OpenAPI (link)
Last Updated |
- 2024-08-21T15:16:47Z |
+ 2024-08-22T17:53:36Z |
Archived |
@@ -737,7 +737,7 @@ OWASP ZAP (link)
Stars |
- 12425 |
+ 12431 |
Watchers |
@@ -745,7 +745,7 @@ OWASP ZAP (link)
Forks |
- 2223 |
+ 2226 |
Created |
@@ -753,7 +753,7 @@ OWASP ZAP (link)
Last Updated |
- 2024-08-22T02:22:35Z |
+ 2024-08-23T01:04:12Z |
Archived |
diff --git a/docs/categories/server-implementations.html b/docs/categories/server-implementations.html
index 5fc37c2c..21a696f2 100644
--- a/docs/categories/server-implementations.html
+++ b/docs/categories/server-implementations.html
@@ -114,7 +114,7 @@ Yes
Yes |
No |
- 193 |
+ 195 |
@@ -137,7 +137,7 @@ Yes |
Yes |
Yes |
- 601 |
+ 603 |
@@ -160,7 +160,7 @@ Yes |
Yes |
No |
- 1336 |
+ 1337 |
@@ -298,7 +298,7 @@ Yes |
Yes |
Yes |
- 8832 |
+ 8833 |
@@ -344,7 +344,7 @@ Yes |
Yes |
Yes |
- 4185 |
+ 4191 |
@@ -480,7 +480,7 @@ No |
Yes |
No |
- 4986 |
+ 4985 |
@@ -549,7 +549,7 @@ No |
Yes |
No |
- 4062 |
+ 4065 |
@@ -570,7 +570,7 @@ No |
Yes |
Yes |
- 96 |
+ 97 |
@@ -616,7 +616,7 @@ No |
Yes |
No |
- 28036 |
+ 28043 |
@@ -754,7 +754,7 @@ No |
Yes |
No |
- 74838 |
+ 74872 |
@@ -842,7 +842,7 @@ No |
Yes |
No |
- 2217 |
+ 2218 |
@@ -863,7 +863,7 @@ No |
Yes |
No |
- 2193 |
+ 2196 |
@@ -884,7 +884,7 @@ No |
Yes |
No |
- 1641 |
+ 1642 |
@@ -907,7 +907,7 @@ No |
Yes |
No |
- 1399 |
+ 1401 |
@@ -949,7 +949,7 @@ No |
Yes |
No |
- 796 |
+ 797 |
@@ -1077,7 +1077,7 @@ No |
Yes |
No |
- 359 |
+ 360 |
@@ -1119,7 +1119,7 @@ No |
Yes |
No |
- 356 |
+ 357 |
@@ -1268,7 +1268,7 @@ No |
Yes |
No |
- 238 |
+ 239 |
@@ -1310,7 +1310,7 @@ No |
Yes |
No |
- 181 |
+ 182 |
@@ -1394,7 +1394,7 @@ No |
Yes |
No |
- 139 |
+ 141 |
@@ -1583,7 +1583,7 @@ Yes |
Yes |
No |
- 61 |
+ 62 |
@@ -1856,7 +1856,7 @@ No |
Yes |
No |
- 36 |
+ 37 |
@@ -2381,7 +2381,7 @@ Yes |
Yes |
No |
- 18 |
+ 19 |
@@ -9065,7 +9065,7 @@ No |
Yes |
No |
- 25528 |
+ 25548 |
@@ -9340,7 +9340,7 @@ Yes |
Yes |
No |
- 129 |
+ 130 |
@@ -10982,7 +10982,7 @@ No |
No |
No |
- 3574 |
+ 3575 |
@@ -11557,7 +11557,7 @@ Rate My OpenAPI (link)
|
Stars |
- 193 |
+ 195 |
Watchers |
@@ -11573,7 +11573,7 @@ Rate My OpenAPI (link)
Last Updated |
- 2024-08-21T15:16:47Z |
+ 2024-08-22T17:53:36Z |
Archived |
@@ -11608,7 +11608,7 @@ OpenAPI-UI (link)
Stars |
- 601 |
+ 603 |
Watchers |
@@ -11624,7 +11624,7 @@ OpenAPI-UI (link)
Last Updated |
- 2024-08-22T01:58:56Z |
+ 2024-08-22T11:36:36Z |
Archived |
@@ -11659,7 +11659,7 @@ optic diff (link)
Stars |
- 1336 |
+ 1337 |
Watchers |
@@ -11675,7 +11675,7 @@ optic diff (link)
Last Updated |
- 2024-08-20T09:01:35Z |
+ 2024-08-22T15:57:14Z |
Archived |
@@ -11965,7 +11965,7 @@ Swagger Editor (link)
Stars |
- 8832 |
+ 8833 |
Watchers |
@@ -11981,7 +11981,7 @@ Swagger Editor (link)
Last Updated |
- 2024-08-21T18:06:47Z |
+ 2024-08-22T15:25:11Z |
Archived |
@@ -12032,7 +12032,7 @@ Apicurio Studio (link)
Last Updated |
- 2024-08-21T05:46:47Z |
+ 2024-08-22T13:40:51Z |
Archived |
@@ -12067,11 +12067,11 @@ Prism (link)
Stars |
- 4185 |
+ 4191 |
Watchers |
- 54 |
+ 55 |
Forks |
@@ -12083,7 +12083,7 @@ Prism (link)
Last Updated |
- 2024-08-21T23:55:59Z |
+ 2024-08-23T00:18:23Z |
Archived |
@@ -12177,7 +12177,7 @@ Fusio (link)
Forks |
- 218 |
+ 217 |
Created |
@@ -12185,7 +12185,7 @@ Fusio (link)
Last Updated |
- 2024-08-20T15:08:19Z |
+ 2024-08-22T19:48:34Z |
Archived |
@@ -12287,7 +12287,7 @@ Redocly CLI (link)
Last Updated |
- 2024-08-21T12:57:47Z |
+ 2024-08-22T07:45:33Z |
Archived |
@@ -12373,7 +12373,7 @@ mitmproxy2swagger (link)
Stars |
- 4986 |
+ 4985 |
Watchers |
@@ -12389,7 +12389,7 @@ mitmproxy2swagger (link)
Last Updated |
- 2024-08-21T18:06:59Z |
+ 2024-08-22T13:07:58Z |
Archived |
@@ -12440,7 +12440,7 @@ OpenApiSpecGeneratorPlugin (link)
Last Updated |
- 2024-08-21T06:34:58Z |
+ 2024-08-22T09:24:05Z |
Archived |
@@ -12526,7 +12526,7 @@ TypeSpec (link)
Stars |
- 4062 |
+ 4065 |
Watchers |
@@ -12534,7 +12534,7 @@ TypeSpec (link)
Forks |
- 188 |
+ 187 |
Created |
@@ -12542,7 +12542,7 @@ TypeSpec (link)
Last Updated |
- 2024-08-22T03:19:01Z |
+ 2024-08-23T00:48:09Z |
Archived |
@@ -12577,7 +12577,7 @@ super-linter (link)
Stars |
- 96 |
+ 97 |
Watchers |
@@ -12593,7 +12593,7 @@ super-linter (link)
Last Updated |
- 2024-07-31T03:12:30Z |
+ 2024-08-22T13:46:53Z |
Archived |
@@ -12679,7 +12679,7 @@ Django REST Framework (link)
Stars |
- 28036 |
+ 28043 |
Watchers |
@@ -12695,7 +12695,7 @@ Django REST Framework (link)
Last Updated |
- 2024-08-22T00:00:26Z |
+ 2024-08-23T02:19:06Z |
Archived |
@@ -12848,7 +12848,7 @@ Counterfact (link)
Last Updated |
- 2024-08-20T13:09:08Z |
+ 2024-08-22T15:52:36Z |
Archived |
@@ -12985,7 +12985,7 @@ FastAPI (link)
Stars |
- 74838 |
+ 74872 |
Watchers |
@@ -12993,7 +12993,7 @@ FastAPI (link)
Forks |
- 6298 |
+ 6297 |
Created |
@@ -13001,7 +13001,7 @@ FastAPI (link)
Last Updated |
- 2024-08-22T03:28:53Z |
+ 2024-08-23T02:53:43Z |
Archived |
@@ -13189,7 +13189,7 @@ Schemathesis (link)
Stars |
- 2217 |
+ 2218 |
Watchers |
@@ -13205,7 +13205,7 @@ Schemathesis (link)
Last Updated |
- 2024-08-21T14:33:04Z |
+ 2024-08-22T19:25:16Z |
Archived |
@@ -13240,7 +13240,7 @@ msgspec (link)
Stars |
- 2193 |
+ 2196 |
Watchers |
@@ -13248,7 +13248,7 @@ msgspec (link)
Forks |
- 62 |
+ 63 |
Created |
@@ -13256,7 +13256,7 @@ msgspec (link)
Last Updated |
- 2024-08-21T23:10:23Z |
+ 2024-08-23T00:47:52Z |
Archived |
@@ -13291,7 +13291,7 @@ rapidoc (link)
Stars |
- 1641 |
+ 1642 |
Watchers |
@@ -13307,7 +13307,7 @@ rapidoc (link)
Last Updated |
- 2024-08-21T11:26:49Z |
+ 2024-08-22T06:44:48Z |
Archived |
@@ -13342,7 +13342,7 @@ OpenAPI-gui (link)
Stars |
- 1399 |
+ 1401 |
Watchers |
@@ -13358,7 +13358,7 @@ OpenAPI-gui (link)
Last Updated |
- 2024-08-20T13:45:17Z |
+ 2024-08-22T14:43:10Z |
Archived |
@@ -13444,7 +13444,7 @@ studio (link)
Stars |
- 796 |
+ 797 |
Watchers |
@@ -13460,7 +13460,7 @@ studio (link)
Last Updated |
- 2024-08-21T14:15:12Z |
+ 2024-08-22T07:33:23Z |
Archived |
@@ -13715,7 +13715,7 @@ safrs (link)
Last Updated |
- 2024-08-21T03:23:01Z |
+ 2024-08-22T15:13:59Z |
Archived |
@@ -13750,7 +13750,7 @@ fastapi-plugins (link)
Stars |
- 359 |
+ 360 |
Watchers |
@@ -13766,7 +13766,7 @@ fastapi-plugins (link)
Last Updated |
- 2024-08-18T05:18:53Z |
+ 2024-08-22T12:08:49Z |
Archived |
@@ -13852,7 +13852,7 @@ fastapi-clean-example (link)
Stars |
- 356 |
+ 357 |
Watchers |
@@ -13860,7 +13860,7 @@ fastapi-clean-example (link)
Forks |
- 51 |
+ 52 |
Created |
@@ -13868,7 +13868,7 @@ fastapi-clean-example (link)
Last Updated |
- 2024-08-21T16:17:43Z |
+ 2024-08-22T11:38:39Z |
Archived |
@@ -14123,7 +14123,7 @@ esmerald (link)
Last Updated |
- 2024-08-21T12:27:52Z |
+ 2024-08-22T17:54:11Z |
Archived |
@@ -14209,7 +14209,7 @@ apibrew (link)
Stars |
- 238 |
+ 239 |
Watchers |
@@ -14225,7 +14225,7 @@ apibrew (link)
Last Updated |
- 2024-08-21T09:58:00Z |
+ 2024-08-22T08:27:16Z |
Archived |
@@ -14264,7 +14264,7 @@ thema (link)
Watchers |
- 141 |
+ 140 |
Forks |
@@ -14311,7 +14311,7 @@ flask-openapi3 (link)
Stars |
- 181 |
+ 182 |
Watchers |
@@ -14327,7 +14327,7 @@ flask-openapi3 (link)
Last Updated |
- 2024-08-20T00:50:42Z |
+ 2024-08-22T09:22:02Z |
Archived |
@@ -14515,7 +14515,7 @@ typescript-backend-toolkit (link)
Stars |
- 139 |
+ 141 |
Watchers |
@@ -14531,7 +14531,7 @@ typescript-backend-toolkit (link)
Last Updated |
- 2024-08-21T20:08:04Z |
+ 2024-08-22T16:38:57Z |
Archived |
@@ -14633,7 +14633,7 @@ learn.openapis.org (link)
Last Updated |
- 2024-08-21T17:22:54Z |
+ 2024-08-22T13:06:29Z |
Archived |
@@ -14837,7 +14837,7 @@ tools.openapis.org (link)
Last Updated |
- 2024-08-21T03:27:59Z |
+ 2024-08-22T03:30:47Z |
Archived |
@@ -14974,7 +14974,7 @@ spectral-owasp-ruleset (link)
Stars |
- 61 |
+ 62 |
Watchers |
@@ -14990,7 +14990,7 @@ spectral-owasp-ruleset (link)
Last Updated |
- 2024-08-19T10:45:17Z |
+ 2024-08-22T19:44:19Z |
Archived |
@@ -15347,7 +15347,7 @@ swagger-editor-validate (link)
Last Updated |
- 2024-08-21T04:25:22Z |
+ 2024-08-22T04:29:38Z |
Archived |
@@ -15637,7 +15637,7 @@ openapiclientwizard (link)
Stars |
- 36 |
+ 37 |
Watchers |
@@ -15653,7 +15653,7 @@ openapiclientwizard (link)
Last Updated |
- 2024-08-01T07:01:16Z |
+ 2024-08-22T15:23:41Z |
Archived |
@@ -16912,7 +16912,7 @@ redocly-cli-cookbook (link)
Stars |
- 18 |
+ 19 |
Watchers |
@@ -16928,7 +16928,7 @@ redocly-cli-cookbook (link)
Last Updated |
- 2024-08-20T07:59:01Z |
+ 2024-08-22T07:22:26Z |
Archived |
@@ -21161,7 +21161,7 @@ nest-starter (link)
Last Updated |
- 2024-06-27T21:11:53Z |
+ 2024-08-22T22:03:28Z |
Archived |
@@ -25088,11 +25088,11 @@ puzzle (link)
Last Updated |
- 2024-05-12T16:02:03Z |
+ 2024-08-23T00:42:40Z |
Archived |
- No |
+ Yes |
Language |
@@ -30698,7 +30698,7 @@ train-travel-api (link)
Last Updated |
- 2024-08-15T14:18:10Z |
+ 2024-08-22T13:43:47Z |
Archived |
@@ -31055,7 +31055,7 @@ frontend (link)
Last Updated |
- 2024-08-12T00:46:09Z |
+ 2024-08-23T00:28:29Z |
Archived |
@@ -33130,7 +33130,7 @@ full-stack-fastapi-template (link)
Stars |
- 25528 |
+ 25548 |
Watchers |
@@ -33138,7 +33138,7 @@ full-stack-fastapi-template (link)
Forks |
- 4382 |
+ 4389 |
Created |
@@ -33146,7 +33146,7 @@ full-stack-fastapi-template (link)
Last Updated |
- 2024-08-22T01:38:45Z |
+ 2024-08-23T03:21:51Z |
Archived |
@@ -33758,7 +33758,7 @@ spring-boot-starter-tomcat (link)
Last Updated |
- 2024-08-14T18:07:10Z |
+ 2024-08-22T22:51:54Z |
Archived |
@@ -33793,7 +33793,7 @@ UI Bakery (link)
Stars |
- 129 |
+ 130 |
Watchers |
@@ -33809,7 +33809,7 @@ UI Bakery (link)
Last Updated |
- 2024-08-17T15:54:00Z |
+ 2024-08-22T16:17:29Z |
Archived |
@@ -37771,7 +37771,7 @@ PHP-CRUD-API (link)
Stars |
- 3574 |
+ 3575 |
Watchers |
@@ -37787,7 +37787,7 @@ PHP-CRUD-API (link)
Last Updated |
- 2024-08-20T09:57:48Z |
+ 2024-08-22T15:32:24Z |
Archived |
diff --git a/docs/categories/server.html b/docs/categories/server.html
index 5a6cd96d..ee4d3a7b 100644
--- a/docs/categories/server.html
+++ b/docs/categories/server.html
@@ -342,7 +342,7 @@ No
Yes |
No |
- 1658 |
+ 1659 |
@@ -433,7 +433,7 @@ No |
Yes |
Yes |
- 5921 |
+ 5922 |
@@ -546,7 +546,7 @@ Yes |
Yes |
Yes |
- 2537 |
+ 2538 |
@@ -569,7 +569,7 @@ Yes |
Yes |
No |
- 1335 |
+ 1336 |
@@ -592,7 +592,7 @@ No |
Yes |
No |
- 744 |
+ 747 |
@@ -615,7 +615,7 @@ Yes |
Yes |
No |
- 1798 |
+ 1804 |
@@ -2959,7 +2959,7 @@ tsoa (link)
|
Last Updated |
- 2024-08-20T14:16:09Z |
+ 2024-08-22T10:44:08Z |
Archived |
@@ -3308,7 +3308,7 @@ Fusio (link)
Forks |
- 218 |
+ 217 |
Created |
@@ -3316,7 +3316,7 @@ Fusio (link)
Last Updated |
- 2024-08-20T15:08:19Z |
+ 2024-08-22T19:48:34Z |
Archived |
@@ -3453,7 +3453,7 @@ @nestjs/swagger (link)
Stars |
- 1658 |
+ 1659 |
Watchers |
@@ -3469,7 +3469,7 @@ @nestjs/swagger (link)
Last Updated |
- 2024-08-21T09:03:15Z |
+ 2024-08-22T05:11:50Z |
Archived |
@@ -3657,7 +3657,7 @@ SpringFox (link)
Stars |
- 5921 |
+ 5922 |
Watchers |
@@ -3665,7 +3665,7 @@ SpringFox (link)
Forks |
- 1533 |
+ 1534 |
Created |
@@ -3673,7 +3673,7 @@ SpringFox (link)
Last Updated |
- 2024-08-21T12:30:36Z |
+ 2024-08-22T22:39:20Z |
Archived |
@@ -3912,7 +3912,7 @@ 🌿 Fern (link)
Stars |
- 2537 |
+ 2538 |
Watchers |
@@ -3928,7 +3928,7 @@ 🌿 Fern (link)
Last Updated |
- 2024-08-22T02:57:46Z |
+ 2024-08-23T02:11:46Z |
Archived |
@@ -3963,11 +3963,11 @@ Swift OpenAPI Generator (link)
Stars |
- 1335 |
+ 1336 |
Watchers |
- 106 |
+ 105 |
Forks |
@@ -3979,7 +3979,7 @@ Swift OpenAPI Generator (link)
Last Updated |
- 2024-08-21T08:40:37Z |
+ 2024-08-23T02:53:22Z |
Archived |
@@ -4014,7 +4014,7 @@ Fuego (link)
Stars |
- 744 |
+ 747 |
Watchers |
@@ -4030,7 +4030,7 @@ Fuego (link)
Last Updated |
- 2024-08-22T01:32:22Z |
+ 2024-08-22T23:20:11Z |
Archived |
@@ -4065,7 +4065,7 @@ Huma (link)
Stars |
- 1798 |
+ 1804 |
Watchers |
@@ -4073,7 +4073,7 @@ Huma (link)
Forks |
- 138 |
+ 139 |
Created |
@@ -4081,7 +4081,7 @@ Huma (link)
Last Updated |
- 2024-08-21T20:54:33Z |
+ 2024-08-22T16:28:48Z |
Archived |
@@ -4171,7 +4171,7 @@ thema (link)
Watchers |
- 141 |
+ 140 |
Forks |
diff --git a/docs/categories/testing-tools.html b/docs/categories/testing-tools.html
index 01284a0f..ab90a881 100644
--- a/docs/categories/testing-tools.html
+++ b/docs/categories/testing-tools.html
@@ -114,7 +114,7 @@ No
Yes |
No |
- 2217 |
+ 2218 |
@@ -242,7 +242,7 @@ Schemathesis (link)
|
Stars |
- 2217 |
+ 2218 |
Watchers |
@@ -258,7 +258,7 @@ Schemathesis (link)
Last Updated |
- 2024-08-21T14:33:04Z |
+ 2024-08-22T19:25:16Z |
Archived |
diff --git a/docs/categories/testing.html b/docs/categories/testing.html
index 1e0ea0b5..2a23aa8b 100644
--- a/docs/categories/testing.html
+++ b/docs/categories/testing.html
@@ -240,7 +240,7 @@ No
Yes |
No |
- 1606 |
+ 1607 |
@@ -368,7 +368,7 @@ Yes |
Yes |
No |
- 736 |
+ 737 |
@@ -717,7 +717,7 @@ No |
Yes |
No |
- 6196 |
+ 6200 |
@@ -759,7 +759,7 @@ No |
Yes |
No |
- 485 |
+ 486 |
@@ -906,7 +906,7 @@ No |
Yes |
No |
- 106 |
+ 107 |
@@ -3056,7 +3056,7 @@ portman (link)
|
Last Updated |
- 2024-08-19T17:22:59Z |
+ 2024-08-22T08:45:11Z |
Archived |
@@ -3091,7 +3091,7 @@ Step CI (link)
Stars |
- 1606 |
+ 1607 |
Watchers |
@@ -3107,7 +3107,7 @@ Step CI (link)
Last Updated |
- 2024-08-18T02:24:45Z |
+ 2024-08-22T18:05:29Z |
Archived |
@@ -3209,7 +3209,7 @@ Chai OpenAPI Response Validator (link)<
Last Updated |
- 2024-08-01T22:32:13Z |
+ 2024-08-22T12:05:37Z |
Archived |
@@ -3260,7 +3260,7 @@ jest-openapi (link)
Last Updated |
- 2024-08-01T22:32:13Z |
+ 2024-08-22T12:05:37Z |
Archived |
@@ -3397,7 +3397,7 @@ Restish (link)
Stars |
- 736 |
+ 737 |
Watchers |
@@ -3413,7 +3413,7 @@ Restish (link)
Last Updated |
- 2024-08-21T19:18:19Z |
+ 2024-08-22T22:25:58Z |
Archived |
@@ -3974,7 +3974,7 @@ Specmatic (link)
Last Updated |
- 2024-08-21T12:16:11Z |
+ 2024-08-22T09:48:22Z |
Archived |
@@ -4213,7 +4213,7 @@ mockoon (link)
Stars |
- 6196 |
+ 6200 |
Watchers |
@@ -4229,7 +4229,7 @@ mockoon (link)
Last Updated |
- 2024-08-21T14:31:50Z |
+ 2024-08-22T18:13:14Z |
Archived |
@@ -4315,7 +4315,7 @@ openapi-codegen (link)
Stars |
- 485 |
+ 486 |
Watchers |
@@ -4331,7 +4331,7 @@ openapi-codegen (link)
Last Updated |
- 2024-08-22T03:08:31Z |
+ 2024-08-22T21:37:27Z |
Archived |
@@ -4484,7 +4484,7 @@ openapivalidators (link)
Last Updated |
- 2024-08-01T22:32:13Z |
+ 2024-08-22T12:05:37Z |
Archived |
@@ -4672,7 +4672,7 @@ moclojer (link)
Stars |
- 106 |
+ 107 |
Watchers |
@@ -4688,7 +4688,7 @@ moclojer (link)
Last Updated |
- 2024-08-21T14:35:07Z |
+ 2024-08-23T00:55:52Z |
Archived |
@@ -5045,7 +5045,7 @@ mockoon.com (link)
Last Updated |
- 2024-08-21T15:13:30Z |
+ 2024-08-22T14:21:34Z |
Archived |
@@ -7442,7 +7442,7 @@ EvoMaster (link)
Last Updated |
- 2024-08-20T18:22:19Z |
+ 2024-08-22T19:31:38Z |
Archived |
diff --git a/docs/categories/text-editors.html b/docs/categories/text-editors.html
index a0891b66..bf678060 100644
--- a/docs/categories/text-editors.html
+++ b/docs/categories/text-editors.html
@@ -157,7 +157,7 @@ Yes
Yes |
Yes |
- 8832 |
+ 8833 |
@@ -594,7 +594,7 @@ Swagger Editor (link)
|
Stars |
- 8832 |
+ 8833 |
Watchers |
@@ -610,7 +610,7 @@ Swagger Editor (link)
Last Updated |
- 2024-08-21T18:06:47Z |
+ 2024-08-22T15:25:11Z |
Archived |
diff --git a/docs/categories/user-interfaces.html b/docs/categories/user-interfaces.html
index 7868941c..dddf11e3 100644
--- a/docs/categories/user-interfaces.html
+++ b/docs/categories/user-interfaces.html
@@ -91,7 +91,7 @@ Yes
Yes |
No |
- 26224 |
+ 26226 |
@@ -114,7 +114,7 @@ Yes |
Yes |
No |
- 23176 |
+ 23182 |
@@ -275,7 +275,7 @@ swagger-ui (link)
|
Stars |
- 26224 |
+ 26226 |
Watchers |
@@ -283,7 +283,7 @@ swagger-ui (link)
Forks |
- 8900 |
+ 8901 |
Created |
@@ -291,7 +291,7 @@ swagger-ui (link)
Last Updated |
- 2024-08-22T03:18:06Z |
+ 2024-08-23T01:28:24Z |
Archived |
@@ -326,7 +326,7 @@ Redoc (link)
Stars |
- 23176 |
+ 23182 |
Watchers |
@@ -342,7 +342,7 @@ Redoc (link)
Last Updated |
- 2024-08-22T01:27:04Z |
+ 2024-08-23T03:18:45Z |
Archived |
diff --git a/src/_data/tools.yaml b/src/_data/tools.yaml
index 618c5fba..70ad36dd 100644
--- a/src/_data/tools.yaml
+++ b/src/_data/tools.yaml
@@ -252,23 +252,23 @@
id: 54fc718fad968b8a7eecd1e88f3fff99
repositoryMetadata:
base64Readme: >-
- PHAgYWxpZ249ImNlbnRlciI+CiAgPGEgYXJpYS1sYWJlbD0iWnVwbG8gbG9nbyIgaHJlZj0iaHR0cHM6Ly96dXBsby5jb20iPgogICAgPGltZyBzcmM9Imh0dHBzOi8vaW1nLnNoaWVsZHMuaW8vYmFkZ2UvTUFERSUyMEJZJTIwWnVwbG8tRkYwMEJELnN2Zz9zdHlsZT1mb3ItdGhlLWJhZGdlJmxvZ289ZGF0YTppbWFnZS9zdmclMmJ4bWw7YmFzZTY0LFBITjJaeUI0Yld4dWN6MGlhSFIwY0RvdkwzZDNkeTUzTXk1dmNtY3ZNakF3TUM5emRtY2lJR1pwYkd3OUltNXZibVVpSUhacFpYZENiM2c5SWpBZ01DQXpOeUF6TWlJZ1lYSnBZUzFvYVdSa1pXNDlJblJ5ZFdVaVBnb2dJRHh3WVhSb0lHWnBiR3c5SWlOR1JqQXdRa1FpSUdROUlrMHlOeTR4TkRJZ01Ua3VPVGM0U0RFMkxqWXlUREkzTGpneklEZ3VOelEyWVM0M05UZ3VOelU0SURBZ01EQXRMalV6TkMweExqSTVNMGc1TGpRNE9GWXdhREU1TGpVek5HRTNMalUzTXlBM0xqVTNNeUF3SURBeE5DNHdOalVnTVM0eE1qVWdOeTQxT1RFZ055NDFPVEVnTUNBd01USXVPRE0ySURNdU1USTJJRGN1TkRBeUlEY3VOREF5SURBZ01ERXRNUzQwTmpFZ09DNHpPVGhzTFRjdU16SWdOeTR6TWpoNklpOCtDaUFnUEhCaGRHZ2dabWxzYkQwaUkwWkdNREJDUkNJZ1pEMGlUVGt1TkRnNUlERXhMakEwTW1neE1DNDFNalJzTFRFeExqRTVJREV4TGpJeFlTNDNOekl1TnpjeUlEQWdNREF1TlRReklERXVNekUyYURFM0xqYzFPWFkzTGpRMU1rZzNMall4WVRjdU5UYzBJRGN1TlRjMElEQWdNREV0TkM0d05qVXRNUzR4TWpWQk55NDFPVE1nTnk0MU9UTWdNQ0F3TVM0M01TQXlOaTQzTmpoaE55NDBNRE1nTnk0ME1ETWdNQ0F3TVRFdU5EWXlMVGd1TXprM2JEY3VNekU0TFRjdU16STVlaUl2UGdvOEwzTjJaejRLJmxhYmVsQ29sb3I9MDAwIj48L2E+CiAgPGEgYXJpYS1sYWJlbD0iTlBNIHZlcnNpb24iIGhyZWY9Imh0dHBzOi8vd3d3Lm5wbWpzLmNvbS9wYWNrYWdlL3Jtb2EiPjxpbWcgYWx0PSJOUE0gQmFkZ2UiIHNyYz0iaHR0cHM6Ly9pbWcuc2hpZWxkcy5pby9ucG0vdi9ybW9hLnN2Zz9zdHlsZT1mb3ItdGhlLWJhZGdlJmxhYmVsQ29sb3I9MDAwMDAwIj48L2E+CiAgPGEgYXJpYS1sYWJlbD0iTGljZW5zZSIgaHJlZj0iaHR0cHM6Ly9naXRodWIuY29tL3p1cGxvL3JhdGUtbXktb3BlbmFwaS9ibG9iL21haW4vTElDRU5TRSI+PGltZyBhbHQ9IkxpY2Vuc2UgQmFkZ2UiIHNyYz0iaHR0cHM6Ly9pbWcuc2hpZWxkcy5pby9ucG0vbC9ybW9hLnN2Zz9zdHlsZT1mb3ItdGhlLWJhZGdlJmxhYmVsQ29sb3I9MDAwMDAwIj48L2E+CiAgPGEgYXJpYS1sYWJlbD0iSm9pbiB0aGUgY29tbXVuaXR5IG9uIERpc2NvcmQiIGhyZWY9Imh0dHBzOi8vZGlzY29yZC5jb20vY2hhbm5lbHMvODQ4OTEzOTkwMzYwNjI5MjY4LzEyMzUyOTQ4NzY3Nzg2MjcyNDYiPjxpbWcgYWx0PSJEaXNjcm9kIEJhZGdlIiBzcmM9Imh0dHBzOi8vaW1nLnNoaWVsZHMuaW8vYmFkZ2UvQ2hhdCUyMG9uJTIwZGlzY29yZC01ODY1RjIuc3ZnP3N0eWxlPWZvci10aGUtYmFkZ2UmbG9nbz1kaXNjb3JkJmxhYmVsQ29sb3I9MDAwMDAwJmxvZ29XaWR0aD0yMCI+PC9hPgo8L3A+Cgo8cCBhbGlnbj0iY2VudGVyIj4KICA8YSBocmVmPSJodHRwczovL3JhdGVteW9wZW5hcGkuY29tLyI+CiAgICA8aW1nIHNyYz0iaHR0cHM6Ly9jZG4uenVwbG8uY29tL3N0YXRpYy9sb2dvcy9sb2dvLnN2ZyIgaGVpZ2h0PSI1MCI+CiAgICA8aDEgYWxpZ249ImNlbnRlciI+UmF0ZSBNeSBPcGVuQVBJPC9oMT4KICA8L2E+CjwvcD4KCjxkaXYgYWxpZ249ImNlbnRlciI+CiAgPGEgaHJlZj0iaHR0cHM6Ly90d2l0dGVyLmNvbS96dXBsbyI+CiAgICA8aW1nIGFsdD0iWCAoZm9ybWVybHkgVHdpdHRlcikgRm9sbG93IiBzcmM9Imh0dHBzOi8vaW1nLnNoaWVsZHMuaW8vdHdpdHRlci9mb2xsb3cvenVwbG8iPgogIDwvYT4KICA8cCBhbGlnbj0iY2VudGVyIj4KICAgIDxhIGhyZWY9IiNvcGVuYXBpLS0taW50cm9kdWN0aW9uIj48c3Ryb25nPkludHJvZHVjdGlvbjwvc3Ryb25nPjwvYT4gwrcgCiAgICA8YSBocmVmPSIjd2Vic2l0ZSI+PHN0cm9uZz5XZWJzaXRlPC9zdHJvbmc+PC9hPiDCtyAKICAgIDxhIGhyZWY9IiNjbGkiPjxzdHJvbmc+Q0xJPC9zdHJvbmc+PC9hPiDCtyAKICAgIDxhIGhyZWY9IiNnaXRodWItYWN0aW9uIj48c3Ryb25nPkdpdEh1YiBBY3Rpb248L3N0cm9uZz48L2E+IMK3IAogICAgPGEgaHJlZj0iI2FwaXMiPjxzdHJvbmc+QVBJczwvc3Ryb25nPjwvYT4KICA8L3A+CjwvZGl2PgoKIyMgT3BlbkFQSSAtIEludHJvZHVjdGlvbgoKW09wZW5BUEldKGh0dHBzOi8vd3d3Lm9wZW5hcGlzLm9yZy8pIGlzIGFuIGluZHVzdHJ5IHN0YW5kYXJkIHRvIGRlc2NyaWJlIEhUVFAKQVBJcy4gV2hlbiB1c2luZyBPcGVuQVBJIGluIHlvdXIgcHJvamVjdCwgeW91IGNhbiBsZXZlcmFnZSBvdGhlciB0b29scyB0byBoZWxwCnlvdSBnZW5lcmF0ZSBkb2N1bWVudGF0aW9uLCBjb2RlLCB0ZXN0cywgbW9jayByZXN1bHRzLCBvciBldmVuIGRlcGxveSB5b3VyIEFQSS4KSXQncyB3aGF0J3MgY29tbW9ubHkga25vd24gYXMgdGhlIE9wZW5BUEkgbGlmZWN5Y2xlLCB3aGljaCBsb29rcyBsaWtlIHRoaXM6Cgo8ZGl2IGFsaWduPSJjZW50ZXIiPgo8aW1nIHN0eWxlPSJ3aWR0aDo1MCUiIHNyYz0iYXNzZXRzL29wZW5hcGktbGlmZWN5Y2xlLWxpZ2h0LnBuZyNnaC1saWdodC1tb2RlLW9ubHkiIC8+CiAgPGltZyBzdHlsZT0id2lkdGg6NTAlIiBzcmM9ImFzc2V0cy9vcGVuYXBpLWxpZmVjeWNsZS1kYXJrLnBuZyNnaC1kYXJrLW1vZGUtb25seSIgLz4KPC9kaXY+CgojIyBSYXRlIE15IE9wZW5BUEkKCkF0IFp1cGxvIHdlIGJlbGlldmUgdGhhdCB0aGUgYmV0dGVyIHRoZSBxdWFsaXR5IG9mIGFuIE9wZW5BUEkgZG9jdW1lbnQsIHRoZQpiZXR0ZXIgdGhlIGRldmVsb3BlciBleHBlcmllbmNlIHdpbGwgYmUgZm9yIHRoZSBjb25zdW1lcnMgb2YgdGhhdCBBUEkuIFRoaXMKZXhwZXJpZW5jZSBpcyBpbXBvcnRhbnQgZm9yIHRoZSBzdWNjZXNzIG9mIGFuIEFQSS4KClJhdGUgTXkgT3BlbkFQSSBpcyBhIHN1aXRlIG9mIHRvb2xzIGRlc2lnbmVkIHRvIGhlbHAgc29mdHdhcmUgZGV2ZWxvcGVycyB1c2luZwpPcGVuQVBJIHRvIGRlc2lnbiBhbmQgaW1wbGVtZW50IHRoZWlyIEFQSXMuIE91ciB0b29scyBpbmNsdWRlIGEgd2Vic2l0ZSwgYSBDTEksCmEgR2l0SHViIEFjdGlvbiBhbmQgYW4gQVBJLCBhbGwgYWltZWQgYXQgZW5zdXJpbmcgeW91ciBBUElzIG1lZXQgaGlnaCBzdGFuZGFyZHMKb2YgcXVhbGl0eSBhbmQgdXNhYmlsaXR5LgoKIyMjIENhdGVnb3JpZXMgb2YgRXZhbHVhdGlvbgoKT3VyIHRvb2xzIGV2YWx1YXRlIHlvdXIgT3BlbkFQSSBkZWZpbml0aW9uIGZpbGVzIGFuZCBwcm92aWRlIGEgY29tcHJlaGVuc2l2ZQpzY29yZSBiYXNlZCBvbiBmb3VyIGtleSBjYXRlZ29yaWVzOgoKLSA8Yj5Eb2N1bWVudGF0aW9uOjwvYj4gRW5zdXJlIHlvdXIgQVBJIGlzIHdlbGwtZG9jdW1lbnRlZCwgbWFraW5nIGl0IGVhc3kgZm9yCiAgdXNlcnMgdG8gdW5kZXJzdGFuZCBhbmQgdXNlLgotIDxiPlNESyBHZW5lcmF0aW9uOjwvYj4gVmVyaWZ5IHRoYXQgeW91ciBBUEkgZGVmaW5pdGlvbiBzdXBwb3J0cyBTREsKICBnZW5lcmF0aW9uLCBmYWNpbGl0YXRpbmcgaW50ZWdyYXRpb24gYW5kIHVzYWdlIGluIGRpZmZlcmVudCBwcm9ncmFtbWluZwogIGxhbmd1YWdlcy4KLSA8Yj5TZWN1cml0eTo8L2I+IENoZWNrIGZvciBiZXN0IHByYWN0aWNlcyBhbmQgc3RhbmRhcmRzIHRvIGVuc3VyZSB5b3VyIEFQSSBpcwogIHNlY3VyZSBhbmQgcHJvdGVjdGVkIGFnYWluc3QgY29tbW9uIHZ1bG5lcmFiaWxpdGllcy4KLSA8Yj5Db21wbGV0ZW5lc3M6PC9iPiBFbnN1cmUgeW91ciBBUEkgZGVmaW5pdGlvbiBpcyBjb21wbGV0ZSwgd2l0aCBhbGwKICBuZWNlc3NhcnkgZW5kcG9pbnRzLCBwYXJhbWV0ZXJzLCBhbmQgcmVzcG9uc2VzIGFjY3VyYXRlbHkgZGVmaW5lZC4KCiMjIyBXZWJzaXRlCgpbaHR0cHM6Ly9yYXRlbXlvcGVuYXBpLmNvbV0oaHR0cHM6Ly9yYXRlbXlvcGVuYXBpLmNvbSkgb2ZmZXJzIGEgdXNlci1mcmllbmRseQppbnRlcmZhY2UgZm9yIGRldmVsb3BlcnMgdG8gdXBsb2FkIGFuZCBhbmFseXplIHRoZWlyIE9wZW5BUEkgZGVmaW5pdGlvbiBmaWxlcy4KCktleSBmZWF0dXJlcyBpbmNsdWRlOgoKLSA8Yj5MaW50aW5nOjwvYj4gVXBsb2FkICYgbGludCB5b3VyIE9wZW5BUEkgZmlsZXMgdG8gcmVjZWl2ZSBkZXRhaWxlZCBmZWVkYmFjay4KLSA8Yj5Db21wcmVoZW5zaXZlIFNjb3Jpbmc6PC9iPiBHZXQgYSBjbGVhciwgYWN0aW9uYWJsZSBzY29yZSByYXRpbmcgeW91ciBBUEkncwogIGRvY3VtZW50YXRpb24sIFNESyBnZW5lcmF0aW9uLCBzZWN1cml0eSwgYW5kIGNvbXBsZXRlbmVzcy4KLSA8Yj5EZXRhaWxlZCBSZXBvcnRzOjwvYj4gQWNjZXNzIGluLWRlcHRoIHJlcG9ydHMgdGhhdCBoaWdobGlnaHQgYXJlYXMgb2YKICBpbXByb3ZlbWVudCBhbmQgcHJvdmlkZSByZWNvbW1lbmRhdGlvbnMuCi0gPGI+VmlzdWFsaXphdGlvbjo8L2I+IEVhc2lseSB2aXN1YWxpemUgdGhlIHN0cnVjdHVyZSBhbmQgcXVhbGl0eSBvZiB5b3VyIEFQSQogIHdpdGggaW4tbGluZSBmZWVkYmFjay4KCiMjIyMgR2V0dGluZyBTdGFydGVkCgpUbyBnZXQgc3RhcnRlZCB2aXNpdCBbaHR0cHM6Ly9yYXRlbXlvcGVuYXBpLmNvbV0oaHR0cHM6Ly9yYXRlbXlvcGVuYXBpLmNvbSksCnVwbG9hZCB5b3VyIE9wZW5BUEkgZGVmaW5pdGlvbiBmaWxlICYgcmV2aWV3IHRoZSBkZXRhaWxlZCByZXBvcnRzIHRvIGlkZW50aWZ5CmFyZWFzIGZvciBpbXByb3ZlbWVudAoKIyMjIENMSQoKVGhlIENMSSB0b29sIGlzIHBlcmZlY3QgZm9yIGRldmVsb3BlcnMgd2hvIHByZWZlciB3b3JraW5nIGZyb20gdGhlIGNvbW1hbmQgbGluZQpvciBuZWVkIHRvIGludGVncmF0ZSBxdWFsaXR5IGNoZWNrcyBpbnRvIHRoZWlyIGRldmVsb3BtZW50IHdvcmtmbG93LgoKS2V5IGZlYXR1cmVzIGluY2x1ZGU6CgotIDxiPkF1dG9tYXRlZCBDaGVja3M6PC9iPiBJbnRlZ3JhdGUgdGhlIENMSSBpbnRvIHlvdXIgQ0kvQ0QgcGlwZWxpbmUgZm9yCiAgYXV0b21hdGVkIHF1YWxpdHkgY2hlY2tzIG9uIGV2ZXJ5IGNvbW1pdC4KLSA8Yj5EZXRhaWxlZCBPdXRwdXQ6PC9iPiBHZXQgZGV0YWlsZWQgZmVlZGJhY2sgZGlyZWN0bHkgaW4geW91ciB0ZXJtaW5hbCwgd2l0aAogIG9wdGlvbnMgdG8gZnVydGhlciBpbnRlZ3JhdGUgdGhlc2UgcmVzdWx0cyBpbnRvIHlvdXIgZGV2ZWxvcG1lbnQgZmxvdy4KCiMjIyMgR2V0dGluZyBTdGFydGVkCgpUbyBnZXQgc3RhcnRlZCBpbnN0YWxsIHRoZSBDTEkgYW5kIHN0YXJ0IGludGVncmF0aW5nIGl0IGludG8geW91ciBkZXZlbG9wbWVudAp3b3JrZmxvdy4KCmBgYGJhc2gKbnBtIGluc3RhbGwgcm1vYQoKcm1vYSBsaW50IC0tZmlsZW5hbWUgPG9wZW5hcGktZmlsZW5hbWU+IC0tYXBpLWtleSA8QVBJX0tFWT4KYGBgCgpTb3VyY2UgY29kZSAmIGRvY3VtZW50YXRpb24gYXQgW3BhY2thZ2VzL2NsaV0oL3BhY2thZ2VzL2NsaS9SRUFETUUubWQpLgoKVG8gZ2V0IGFuIGBBUElfS0VZYCBzaWduIHVwIGZvciBmcmVlIGF0CltodHRwczovL2FwaS5yYXRlbXlvcGVuYXBpLmNvbS9kb2NzXShodHRwczovL2FwaS5yYXRlbXlvcGVuYXBpLmNvbS9kb2NzKS4KCiMjIyBHaXRIdWIgQWN0aW9uCgpPdXIgR2l0SHViIGFjdGlvbiBzZWFtbGVzc2x5IGludGVncmF0ZXMgd2l0aCB5b3VyIHJlcG9zaXRvcnkgdG8gZW5zdXJlIHlvdXIgQVBJcwphcmUgY29uc2lzdGVudGx5IG9mIGhpZ2ggcXVhbGl0eS4gS2V5IGZlYXR1cmVzIGluY2x1ZGU6CgotIDxiPkF1dG9tYXRlZCBMaW50aW5nOjwvYj4gQXV0b21hdGljYWxseSBsaW50IE9wZW5BUEkgZGVmaW5pdGlvbiBmaWxlcyBvbiBldmVyeQogIHB1bGwgcmVxdWVzdCBhbmQgcHVzaCB0byBlbnN1cmUgY29kZSBxdWFsaXR5LgotIDxiPklubGluZSBGZWVkYmFjazo8L2I+IFJlY2VpdmUgZmVlZGJhY2sgZGlyZWN0bHkgaW4geW91ciBwdWxsIHJlcXVlc3RzIHdpdGgKICBjb21tZW50cyBoaWdobGlnaHRpbmcgaXNzdWVzIGFuZCBhcmVhcyBmb3IgaW1wcm92ZW1lbnQuCi0gPGI+Q29udGludW91cyBJbXByb3ZlbWVudDo8L2I+IE1haW50YWluIGEgaGlnaCBzdGFuZGFyZCBvZiBBUEkgcXVhbGl0eSB3aXRoCiAgY29udGludW91cyBtb25pdG9yaW5nIGFuZCBmZWVkYmFjay4KCiMjIyMgR2V0dGluZyBTdGFydGVkCgpUbyBnZXQgc3RhcnRlZCBhZGQgb3VyIEdpdEh1YiBhY3Rpb24gdG8geW91ciByZXBvc2l0b3J5ICYgY29uZmlndXJlIGl0IHRvIHJ1biBvbgpQdWxsIFJlcXVlc3RzIGFuZCBQdXNoZXMgdG8gZW5zdXJlIGNvbnRpbnVvdXMgcXVhbGl0eSBtb25pdG9yaW5nLgoKYGBgYmFzaApzdGVwczoKICAtIHVzZXM6IGFjdGlvbnMvY2hlY2tvdXRAdjQKICAtIHVzZXM6IHp1cGxvL3Jtb2EtYWN0aW9uQHYxCiAgICB3aXRoOgogICAgICBmaWxlcGF0aDogJy4vbXktYXBpLmpzb24nCiAgICAgIGFwaWtleTogJHt7IHNlY3JldHMuUk1PQV9BUElfS0VZIH19CmBgYAoKU291cmNlIGNvZGUgJiBkb2N1bWVudGF0aW9uIGF0CltybW9hLWFjdGlvbl0oaHR0cHM6Ly9naXRodWIuY29tL3p1cGxvL3Jtb2EtYWN0aW9uKQoKIyMjIEFQSXMKCkFsbCBvdXIgdG9vbHMgbWFrZSB1c2Ugb2Ygb3VyIEFQSXMgdG8gYW5hbHl6ZSBhbmQgcHJvdmlkZSBkZXRhaWxlZCByZXN1bHRzLiBZb3UKY2FuIGFsc28gbWFrZSBkaXJlY3QgdXNlIG9mIHRoZXNlIEFQSXMsIHdoaWNoIGlzIGEgZ3JlYXQgb3B0aW9uIGZvciB0aG9zZQpkZXZlbG9wZXJzIHRoYXQgd2FudCB0byBidWlsZCB0aGVpciBvd24gdG9vbHMgb3IgaW50ZWdyYXRlIHRoZSBSYXRlIE15IE9wZW5BUEkKbGludCBjYXBhYmlsaXRpZXMgaW4gYSB3YXkgdGhhdCdzIG5vdCBjb3ZlcmVkIHRoZSBleGlzdGluZyB0b29scy4KCiMjIyMgR2V0dGluZyBTdGFydGVkCgpUbyBnZXQgc3RhcnRlZCwgZ28gdG8KW2h0dHBzOi8vYXBpLnJhdGVteW9wZW5hcGkuY29tL2RvY3NdKGh0dHBzOi8vYXBpLnJhdGVteW9wZW5hcGkuY29tL2RvY3MpIHRvIGdldAp0aGUgZGV0YWlsZWQgZG9jdW1lbnRhdGlvbiBvbiBldmVyeSBlbmRwb2ludCBhdmFpbGFibGUgZm9yIHVzZS4KCiMjIyMgR2V0dGluZyBhbiBBUEkga2V5CgpUbyBnZXQgYW4gYEFQSV9LRVlgIHlvdSBjYW4gc2lnbiB1cCBmb3IgZnJlZSBhdApbaHR0cHM6Ly9hcGkucmF0ZW15b3BlbmFwaS5jb20vZG9jc10oaHR0cHM6Ly9hcGkucmF0ZW15b3BlbmFwaS5jb20vZG9jcykuCgojIExpY2Vuc2UKCltNSVQgTGljZW5zZV0oLi9MSUNFTlNFKQo=
- readmeEtag: '"07486bcad09525058a7eaac904bec5b65940476c"'
- readmeLastModified: Wed, 14 Aug 2024 14:24:51 GMT
+ PHAgYWxpZ249ImNlbnRlciI+CiAgPGEgaHJlZj0iaHR0cHM6Ly9yYXRlbXlvcGVuYXBpLmNvbS8iPgogICAgPGltZyBzcmM9Imh0dHBzOi8vY2RuLnp1cGxvLmNvbS9zdGF0aWMvbG9nb3MvbG9nby5zdmciIGhlaWdodD0iNTAiPgogICAgPGgxIGFsaWduPSJjZW50ZXIiPlJhdGUgTXkgT3BlbkFQSTwvaDE+CiAgPC9hPgo8L3A+Cgo8ZGl2IGFsaWduPSJjZW50ZXIiPgogIDxwIGFsaWduPSJjZW50ZXIiPgogICAgPGEgYXJpYS1sYWJlbD0iWnVwbG8gbG9nbyIgaHJlZj0iaHR0cHM6Ly96dXBsby5jb20iPgogICAgICA8aW1nIHNyYz0iaHR0cHM6Ly9pbWcuc2hpZWxkcy5pby9iYWRnZS9NQURFJTIwQlklMjBadXBsby1GRjAwQkQuc3ZnP3N0eWxlPWZvci10aGUtYmFkZ2UmbG9nbz1kYXRhOmltYWdlL3N2ZyUyYnhtbDtiYXNlNjQsUEhOMlp5QjRiV3h1Y3owaWFIUjBjRG92TDNkM2R5NTNNeTV2Y21jdk1qQXdNQzl6ZG1jaUlHWnBiR3c5SW01dmJtVWlJSFpwWlhkQ2IzZzlJakFnTUNBek55QXpNaUlnWVhKcFlTMW9hV1JrWlc0OUluUnlkV1VpUGdvZ0lEeHdZWFJvSUdacGJHdzlJaU5HUmpBd1FrUWlJR1E5SWsweU55NHhORElnTVRrdU9UYzRTREUyTGpZeVRESTNMamd6SURndU56UTJZUzQzTlRndU56VTRJREFnTURBdExqVXpOQzB4TGpJNU0wZzVMalE0T0ZZd2FERTVMalV6TkdFM0xqVTNNeUEzTGpVM015QXdJREF4TkM0d05qVWdNUzR4TWpVZ055NDFPVEVnTnk0MU9URWdNQ0F3TVRJdU9ETTJJRE11TVRJMklEY3VOREF5SURjdU5EQXlJREFnTURFdE1TNDBOakVnT0M0ek9UaHNMVGN1TXpJZ055NHpNamg2SWk4K0NpQWdQSEJoZEdnZ1ptbHNiRDBpSTBaR01EQkNSQ0lnWkQwaVRUa3VORGc1SURFeExqQTBNbWd4TUM0MU1qUnNMVEV4TGpFNUlERXhMakl4WVM0M056SXVOemN5SURBZ01EQXVOVFF6SURFdU16RTJhREUzTGpjMU9YWTNMalExTWtnM0xqWXhZVGN1TlRjMElEY3VOVGMwSURBZ01ERXROQzR3TmpVdE1TNHhNalZCTnk0MU9UTWdOeTQxT1RNZ01DQXdNUzQzTVNBeU5pNDNOamhoTnk0ME1ETWdOeTQwTURNZ01DQXdNVEV1TkRZeUxUZ3VNemszYkRjdU16RTRMVGN1TXpJNWVpSXZQZ284TDNOMlp6NEsmbGFiZWxDb2xvcj0wMDAiPjwvYT4KICAgIDxhIGFyaWEtbGFiZWw9Ik5QTSB2ZXJzaW9uIiBocmVmPSJodHRwczovL3d3dy5ucG1qcy5jb20vcGFja2FnZS9ybW9hIj48aW1nIGFsdD0iTlBNIEJhZGdlIiBzcmM9Imh0dHBzOi8vaW1nLnNoaWVsZHMuaW8vbnBtL3Yvcm1vYS5zdmc/c3R5bGU9Zm9yLXRoZS1iYWRnZSZsYWJlbENvbG9yPTAwMDAwMCI+PC9hPgogICAgPGEgYXJpYS1sYWJlbD0iTGljZW5zZSIgaHJlZj0iaHR0cHM6Ly9naXRodWIuY29tL3p1cGxvL3JhdGUtbXktb3BlbmFwaS9ibG9iL21haW4vTElDRU5TRSI+PGltZyBhbHQ9IkxpY2Vuc2UgQmFkZ2UiIHNyYz0iaHR0cHM6Ly9pbWcuc2hpZWxkcy5pby9ucG0vbC9ybW9hLnN2Zz9zdHlsZT1mb3ItdGhlLWJhZGdlJmxhYmVsQ29sb3I9MDAwMDAwIj48L2E+CiAgICA8YSBhcmlhLWxhYmVsPSJKb2luIHRoZSBjb21tdW5pdHkgb24gRGlzY29yZCIgaHJlZj0iaHR0cHM6Ly9kaXNjb3JkLmNvbS9jaGFubmVscy84NDg5MTM5OTAzNjA2MjkyNjgvMTIzNTI5NDg3Njc3ODYyNzI0NiI+PGltZyBhbHQ9IkRpc2Nyb2QgQmFkZ2UiIHNyYz0iaHR0cHM6Ly9pbWcuc2hpZWxkcy5pby9iYWRnZS9DaGF0JTIwb24lMjBkaXNjb3JkLTU4NjVGMi5zdmc/c3R5bGU9Zm9yLXRoZS1iYWRnZSZsb2dvPWRpc2NvcmQmbGFiZWxDb2xvcj0wMDAwMDAmbG9nb1dpZHRoPTIwIj48L2E+CiAgPC9wPgogIDxhIGhyZWY9Imh0dHBzOi8vdHdpdHRlci5jb20venVwbG8iPgogICAgPGltZyBhbHQ9IlggKGZvcm1lcmx5IFR3aXR0ZXIpIEZvbGxvdyIgc3JjPSJodHRwczovL2ltZy5zaGllbGRzLmlvL3R3aXR0ZXIvZm9sbG93L3p1cGxvIj4KICA8L2E+CiAgPHAgYWxpZ249ImNlbnRlciI+CiAgICA8YSBocmVmPSIjb3BlbmFwaS0tLWludHJvZHVjdGlvbiI+PHN0cm9uZz5JbnRyb2R1Y3Rpb248L3N0cm9uZz48L2E+IMK3IAogICAgPGEgaHJlZj0iI3dlYnNpdGUiPjxzdHJvbmc+V2Vic2l0ZTwvc3Ryb25nPjwvYT4gwrcgCiAgICA8YSBocmVmPSIjY2xpIj48c3Ryb25nPkNMSTwvc3Ryb25nPjwvYT4gwrcgCiAgICA8YSBocmVmPSIjZ2l0aHViLWFjdGlvbiI+PHN0cm9uZz5HaXRIdWIgQWN0aW9uPC9zdHJvbmc+PC9hPiDCtyAKICAgIDxhIGhyZWY9IiNhcGlzIj48c3Ryb25nPkFQSXM8L3N0cm9uZz48L2E+CiAgPC9wPgo8L2Rpdj4KCiMjIE9wZW5BUEkgLSBJbnRyb2R1Y3Rpb24KCltPcGVuQVBJXShodHRwczovL3d3dy5vcGVuYXBpcy5vcmcvKSBpcyBhbiBpbmR1c3RyeSBzdGFuZGFyZCB0byBkZXNjcmliZSBIVFRQCkFQSXMuIFdoZW4gdXNpbmcgT3BlbkFQSSBpbiB5b3VyIHByb2plY3QsIHlvdSBjYW4gbGV2ZXJhZ2Ugb3RoZXIgdG9vbHMgdG8gaGVscAp5b3UgZ2VuZXJhdGUgZG9jdW1lbnRhdGlvbiwgY29kZSwgdGVzdHMsIG1vY2sgcmVzdWx0cywgb3IgZXZlbiBkZXBsb3kgeW91ciBBUEkuCkl0J3Mgd2hhdCdzIGNvbW1vbmx5IGtub3duIGFzIHRoZSBPcGVuQVBJIGxpZmVjeWNsZSwgd2hpY2ggbG9va3MgbGlrZSB0aGlzOgoKPGRpdiBhbGlnbj0iY2VudGVyIj4KPGltZyBzdHlsZT0id2lkdGg6NTAlIiBzcmM9ImFzc2V0cy9vcGVuYXBpLWxpZmVjeWNsZS1saWdodC5wbmcjZ2gtbGlnaHQtbW9kZS1vbmx5IiAvPgogIDxpbWcgc3R5bGU9IndpZHRoOjUwJSIgc3JjPSJhc3NldHMvb3BlbmFwaS1saWZlY3ljbGUtZGFyay5wbmcjZ2gtZGFyay1tb2RlLW9ubHkiIC8+CjwvZGl2PgoKIyMgUmF0ZSBNeSBPcGVuQVBJCgpBdCBadXBsbyB3ZSBiZWxpZXZlIHRoYXQgdGhlIGJldHRlciB0aGUgcXVhbGl0eSBvZiBhbiBPcGVuQVBJIGRvY3VtZW50LCB0aGUKYmV0dGVyIHRoZSBkZXZlbG9wZXIgZXhwZXJpZW5jZSB3aWxsIGJlIGZvciB0aGUgY29uc3VtZXJzIG9mIHRoYXQgQVBJLiBUaGlzCmV4cGVyaWVuY2UgaXMgaW1wb3J0YW50IGZvciB0aGUgc3VjY2VzcyBvZiBhbiBBUEkuCgpfUmF0ZSBNeSBPcGVuQVBJXyBpcyBhIHN1aXRlIG9mIHRvb2xzIGRlc2lnbmVkIHRvIGhlbHAgc29mdHdhcmUgZGV2ZWxvcGVycyB3aG8KYXJlIHVzaW5nIE9wZW5BUEkgdG8gZGVzaWduIGFuZCBpbXBsZW1lbnQgdGhlaXIgQVBJcy4KCk91ciB0b29scyBpbmNsdWRlIGEKW3dlYnNpdGVdKGh0dHBzOi8vcmF0ZW15b3BlbmFwaS5jb20/dXRtX3NvdXJjZT1naXRodWImdXRtX21lZGl1bT13ZWIpLCBhCltDTEldKGh0dHBzOi8vd3d3Lm5wbWpzLmNvbS9wYWNrYWdlL3Jtb2EpLCBhCltHaXRIdWIgQWN0aW9uXShodHRwczovL2dpdGh1Yi5jb20vbWFya2V0cGxhY2UvYWN0aW9ucy9yYXRlLW15LW9wZW5hcGktYWN0aW9uKQphbmQgYW4gW0FQSV0oaHR0cHM6Ly9hcGkucmF0ZW15b3BlbmFwaS5jb20vZG9jcy9yb3V0ZXMvaW50cm9kdWN0aW9uKSwgYWxsIGFpbWVkCmF0IGVuc3VyaW5nIHlvdXIgQVBJcyBtZWV0IGhpZ2ggc3RhbmRhcmRzIG9mIHF1YWxpdHkgYW5kIHVzYWJpbGl0eS4KCiMjIyBDYXRlZ29yaWVzIG9mIEV2YWx1YXRpb24KCk91ciB0b29scyBldmFsdWF0ZSB5b3VyIE9wZW5BUEkgZGVmaW5pdGlvbiBmaWxlcyBhbmQgcHJvdmlkZSBhIGNvbXByZWhlbnNpdmUKc2NvcmUgYmFzZWQgb24gZm91ciBrZXkgY2F0ZWdvcmllczoKCi0gKipEb2N1bWVudGF0aW9uOioqIEVuc3VyZSB5b3VyIEFQSSBpcyB3ZWxsLWRvY3VtZW50ZWQsIG1ha2luZyBpdCBlYXN5IGZvcgogIHVzZXJzIHRvIHVuZGVyc3RhbmQgYW5kIHVzZS4KLSAqKlNESyBHZW5lcmF0aW9uOioqIFZlcmlmeSB0aGF0IHlvdXIgQVBJIGRlZmluaXRpb24gc3VwcG9ydHMgU0RLIGdlbmVyYXRpb24sCiAgZmFjaWxpdGF0aW5nIGludGVncmF0aW9uIGFuZCB1c2FnZSBpbiBkaWZmZXJlbnQgcHJvZ3JhbW1pbmcgbGFuZ3VhZ2VzLgotICoqU2VjdXJpdHk6KiogQ2hlY2sgZm9yIGJlc3QgcHJhY3RpY2VzIGFuZCBzdGFuZGFyZHMgdG8gZW5zdXJlIHlvdXIgQVBJIGlzCiAgc2VjdXJlIGFuZCBwcm90ZWN0ZWQgYWdhaW5zdCBjb21tb24gdnVsbmVyYWJpbGl0aWVzLgotICoqQ29tcGxldGVuZXNzKiogRW5zdXJlIHlvdXIgQVBJIGRlZmluaXRpb24gaXMgY29tcGxldGUsIHdpdGggYWxsIG5lY2Vzc2FyeQogIGVuZHBvaW50cywgcGFyYW1ldGVycywgYW5kIHJlc3BvbnNlcyBhY2N1cmF0ZWx5IGRlZmluZWQuCgojIyMgV2Vic2l0ZQoKW2h0dHBzOi8vcmF0ZW15b3BlbmFwaS5jb21dKGh0dHBzOi8vcmF0ZW15b3BlbmFwaS5jb20/dXRtX3NvdXJjZT1naXRodWImdXRtX21lZGl1bT13ZWIpCm9mZmVycyBhIHVzZXItZnJpZW5kbHkgaW50ZXJmYWNlIGZvciBkZXZlbG9wZXJzIHRvIHVwbG9hZCBhbmQgYW5hbHl6ZSB0aGVpcgpPcGVuQVBJIGRlZmluaXRpb24gZmlsZXMuCgpLZXkgZmVhdHVyZXMgaW5jbHVkZToKCi0gKipMaW50aW5nOioqIFVwbG9hZCAmIGxpbnQgeW91ciBPcGVuQVBJIGZpbGVzIHRvIHJlY2VpdmUgZGV0YWlsZWQgZmVlZGJhY2suCi0gKipDb21wcmVoZW5zaXZlIFNjb3Jpbmc6KiogR2V0IGEgY2xlYXIsIGFjdGlvbmFibGUgc2NvcmUgcmF0aW5nIHlvdXIgQVBJJ3MKICBkb2N1bWVudGF0aW9uLCBTREsgZ2VuZXJhdGlvbiwgc2VjdXJpdHksIGFuZCBjb21wbGV0ZW5lc3MuCi0gKipEZXRhaWxlZCBSZXBvcnRzOioqIEFjY2VzcyBpbi1kZXB0aCByZXBvcnRzIHRoYXQgaGlnaGxpZ2h0IGFyZWFzIG9mCiAgaW1wcm92ZW1lbnQgYW5kIHByb3ZpZGUgcmVjb21tZW5kYXRpb25zLgotICoqVmlzdWFsaXphdGlvbjoqKiBFYXNpbHkgdmlzdWFsaXplIHRoZSBzdHJ1Y3R1cmUgYW5kIHF1YWxpdHkgb2YgeW91ciBBUEkgd2l0aAogIGluLWxpbmUgZmVlZGJhY2suCgojIyMjIEdldHRpbmcgU3RhcnRlZAoKVG8gZ2V0IHN0YXJ0ZWQgdmlzaXQKW2h0dHBzOi8vcmF0ZW15b3BlbmFwaS5jb21dKGh0dHBzOi8vcmF0ZW15b3BlbmFwaS5jb20/dXRtX3NvdXJjZT1naXRodWImdXRtX21lZGl1bT13ZWIpLAp1cGxvYWQgeW91ciBPcGVuQVBJIGRlZmluaXRpb24gZmlsZSBhbmQgcmV2aWV3IHRoZSBkZXRhaWxlZCByZXBvcnRzIHRvIGlkZW50aWZ5CmFyZWFzIGZvciBpbXByb3ZlbWVudC4KCiMjIyBDTEkKClRoZSBDTEkgdG9vbCBpcyBwZXJmZWN0IGZvciBkZXZlbG9wZXJzIHdobyBwcmVmZXIgd29ya2luZyBmcm9tIHRoZSBjb21tYW5kIGxpbmUKb3IgbmVlZCB0byBpbnRlZ3JhdGUgcXVhbGl0eSBjaGVja3MgaW50byB0aGVpciBkZXZlbG9wbWVudCB3b3JrZmxvdy4KCktleSBmZWF0dXJlcyBpbmNsdWRlOgoKLSA8KipBdXRvbWF0ZWQgQ2hlY2tzOioqIEludGVncmF0ZSB0aGUgQ0xJIGludG8geW91ciBDSS9DRCBwaXBlbGluZSBmb3IKICBhdXRvbWF0ZWQgcXVhbGl0eSBjaGVja3Mgb24gZXZlcnkgY29tbWl0LgotICoqRGV0YWlsZWQgT3V0cHV0OioqIEdldCBkZXRhaWxlZCBmZWVkYmFjayBkaXJlY3RseSBpbiB5b3VyIHRlcm1pbmFsLCB3aXRoCiAgb3B0aW9ucyB0byBmdXJ0aGVyIGludGVncmF0ZSB0aGVzZSByZXN1bHRzIGludG8geW91ciBkZXZlbG9wbWVudCBmbG93LgoKIyMjIyBHZXR0aW5nIFN0YXJ0ZWQKClRvIGdldCBzdGFydGVkIGluc3RhbGwgdGhlIENMSSBhbmQgc3RhcnQgaW50ZWdyYXRpbmcgaXQgaW50byB5b3VyIGRldmVsb3BtZW50CndvcmtmbG93LgoKYGBgYmFzaApucG0gaW5zdGFsbCBybW9hCgpybW9hIGxpbnQgLS1maWxlbmFtZSA8b3BlbmFwaS1maWxlbmFtZT4gLS1hcGkta2V5IDxBUElfS0VZPgpgYGAKCkNMSSBzb3VyY2UgY29kZSBhbmQgZG9jdW1lbnRhdGlvbiBjYW4gYmUgZm91bmQgYXQKW3BhY2thZ2VzL2NsaV0oL3BhY2thZ2VzL2NsaS9SRUFETUUubWQpLgoKVG8gZ2V0IGFuIGBBUElfS0VZYCBzaWduIHVwIGZvciBmcmVlIGF0CltodHRwczovL2FwaS5yYXRlbXlvcGVuYXBpLmNvbS9kb2NzXShodHRwczovL2FwaS5yYXRlbXlvcGVuYXBpLmNvbS9kb2NzKS4KCiMjIyBHaXRIdWIgQWN0aW9uCgpPdXIgR2l0SHViIEFjdGlvbiBzZWFtbGVzc2x5IGludGVncmF0ZXMgd2l0aCB5b3VyIHJlcG9zaXRvcnkgdG8gZW5zdXJlIHlvdXIgQVBJcwphcmUgY29uc2lzdGVudGx5IG9mIGhpZ2ggcXVhbGl0eS4KCktleSBmZWF0dXJlcyBpbmNsdWRlOgoKLSAqKkF1dG9tYXRlZCBMaW50aW5nOioqIEF1dG9tYXRpY2FsbHkgbGludCBPcGVuQVBJIGRlZmluaXRpb24gZmlsZXMgb24gZXZlcnkKICBwdWxsIHJlcXVlc3QgYW5kIHB1c2ggdG8gZW5zdXJlIGNvZGUgcXVhbGl0eS4KLSAqKklubGluZSBGZWVkYmFjazoqKiBSZWNlaXZlIGZlZWRiYWNrIGRpcmVjdGx5IGluIHlvdXIgcHVsbCByZXF1ZXN0cyB3aXRoCiAgY29tbWVudHMgaGlnaGxpZ2h0aW5nIGlzc3VlcyBhbmQgYXJlYXMgZm9yIGltcHJvdmVtZW50LgotICoqQ29udGludW91cyBJbXByb3ZlbWVudDoqKiBNYWludGFpbiBhIGhpZ2ggc3RhbmRhcmQgb2YgQVBJIHF1YWxpdHkgd2l0aAogIGNvbnRpbnVvdXMgbW9uaXRvcmluZyBhbmQgZmVlZGJhY2suCgojIyMjIEdldHRpbmcgU3RhcnRlZAoKVG8gZ2V0IHN0YXJ0ZWQgYWRkIG91ciBHaXRIdWIgYWN0aW9uIHRvIHlvdXIgcmVwb3NpdG9yeSBhbmQgY29uZmlndXJlIGl0IHRvIHJ1bgpvbiBQdWxsIFJlcXVlc3RzIGFuZCBQdXNoZXMgdG8gZW5zdXJlIGNvbnRpbnVvdXMgcXVhbGl0eSBtb25pdG9yaW5nLgoKYGBgeWFtbApzdGVwczoKICAtIHVzZXM6IGFjdGlvbnMvY2hlY2tvdXRAdjQKICAtIHVzZXM6IHp1cGxvL3Jtb2EtYWN0aW9uQHYxCiAgICB3aXRoOgogICAgICBmaWxlcGF0aDogIi4vbXktYXBpLmpzb24iCiAgICAgIGFwaWtleTogJHt7IHNlY3JldHMuUk1PQV9BUElfS0VZIH19CmBgYAoKR2l0SHViIEFjdGlvbiBzb3VyY2UgY29kZSBhbmQgZG9jdW1lbnRhdGlvbiBjYW4gYmUgZm91bmQgYXQKW3Jtb2EtYWN0aW9uXShodHRwczovL2dpdGh1Yi5jb20venVwbG8vcm1vYS1hY3Rpb24pLgoKIyMjIyBHZXR0aW5nIGFuIEFQSSBrZXkKClRvIGdldCBhbiBgQVBJX0tFWWAgeW91IGNhbiBzaWduIHVwIGZvciBmcmVlIGF0CltodHRwczovL2FwaS5yYXRlbXlvcGVuYXBpLmNvbS9kb2NzXShodHRwczovL2FwaS5yYXRlbXlvcGVuYXBpLmNvbS9kb2NzKS4KCiMjIyBBUElzCgpBbGwgb3VyIHRvb2xzIG1ha2UgdXNlIG9mIG91ciBBUElzIHRvIGFuYWx5emUgYW5kIHByb3ZpZGUgZGV0YWlsZWQgcmVzdWx0cy4KCllvdSBjYW4gYWxzbyBtYWtlIGRpcmVjdCB1c2Ugb2YgdGhlc2UgQVBJcywgd2hpY2ggaXMgYSBncmVhdCBvcHRpb24gZm9yIHRob3NlCmRldmVsb3BlcnMgdGhhdCB3YW50IHRvIGJ1aWxkIHRoZWlyIG93biB0b29scyBvciBpbnRlZ3JhdGUgdGhlIFJhdGUgTXkgT3BlbkFQSQpsaW50aW5nIGNhcGFiaWxpdGllcyBpbiBhIHdheSB0aGF0J3Mgbm90IGNvdmVyZWQgdGhlIGV4aXN0aW5nIHRvb2xzLgoKIyMjIyBHZXR0aW5nIFN0YXJ0ZWQKClRvIGdldCBzdGFydGVkLCBnbyB0bwpbaHR0cHM6Ly9hcGkucmF0ZW15b3BlbmFwaS5jb20vZG9jc10oaHR0cHM6Ly9hcGkucmF0ZW15b3BlbmFwaS5jb20vZG9jcykgdG8gZ2V0CnRoZSBkZXRhaWxlZCBkb2N1bWVudGF0aW9uIG9uIGV2ZXJ5IGVuZHBvaW50IGF2YWlsYWJsZSBmb3IgdXNlLgoKIyMjIyBHZXR0aW5nIGFuIEFQSSBrZXkKClRvIGdldCBhbiBgQVBJX0tFWWAgeW91IGNhbiBzaWduIHVwIGZvciBmcmVlIGF0CltodHRwczovL2FwaS5yYXRlbXlvcGVuYXBpLmNvbS9kb2NzXShodHRwczovL2FwaS5yYXRlbXlvcGVuYXBpLmNvbS9kb2NzKS4KCiMgTGljZW5zZQoKW01JVCBMaWNlbnNlXSguL0xJQ0VOU0UpCg==
+ readmeEtag: '"c0f831b7566b70e4f15b7325e8eff11cccb35602"'
+ readmeLastModified: Thu, 22 Aug 2024 17:48:19 GMT
repositoryId: 653466139
description: null
created: '2023-06-14T05:39:38Z'
- updated: '2024-08-21T15:16:47Z'
+ updated: '2024-08-22T17:53:36Z'
language: TypeScript
archived: false
- stars: 193
+ stars: 195
watchers: 4
forks: 4
owner: zuplo
logo: https://avatars.githubusercontent.com/u/85497839?v=4
license: MIT
- repoEtag: '"41373a80cdb72d05c98cc7a7fc441cf11763f8dd0d5c73c0d13f6df836641777"'
- repoLastModified: Wed, 21 Aug 2024 15:16:47 GMT
+ repoEtag: '"96197a88e41a6cf608973f65d9b774e706164f8bc303ab9989fb969706e078e4"'
+ repoLastModified: Thu, 22 Aug 2024 17:53:36 GMT
foundInMaster: true
- source:
- https://openapi.tools/
@@ -285,23 +285,23 @@
id: 9cad3caafc5e01c5c1cd167696f30f10
repositoryMetadata:
base64Readme: >-
- IyBTY2FsYXIgQVBJIFJlZmVyZW5jZQoKWyFbQ0ldKGh0dHBzOi8vZ2l0aHViLmNvbS9zY2FsYXIvc2NhbGFyL2FjdGlvbnMvd29ya2Zsb3dzL2NpLnltbC9iYWRnZS5zdmcpXShodHRwczovL2dpdGh1Yi5jb20vc2NhbGFyL3NjYWxhci9hY3Rpb25zL3dvcmtmbG93cy9jaS55bWwpClshW0NvbnRyaWJ1dG9yc10oaHR0cHM6Ly9pbWcuc2hpZWxkcy5pby9naXRodWIvY29udHJpYnV0b3JzL3NjYWxhci9zY2FsYXIpXShodHRwczovL2dpdGh1Yi5jb20vc2NhbGFyL3NjYWxhci9ncmFwaHMvY29udHJpYnV0b3JzKQpbIVtHaXRIdWIgTGljZW5zZV0oaHR0cHM6Ly9pbWcuc2hpZWxkcy5pby9naXRodWIvbGljZW5zZS9zY2FsYXIvc2NhbGFyKV0oaHR0cHM6Ly9naXRodWIuY29tL3NjYWxhci9zY2FsYXIvYmxvYi9tYWluL0xJQ0VOU0UpClshW0Rpc2NvcmRdKGh0dHBzOi8vaW1nLnNoaWVsZHMuaW8vZGlzY29yZC8xMTM1MzMwMjA3OTYwNjc4NDEwP3N0eWxlPWZsYXQmY29sb3I9NTg2NUYyKV0oaHR0cHM6Ly9kaXNjb3JkLmdnL3NjYWxhcikKCkdlbmVyYXRlIGludGVyYWN0aXZlIEFQSSBkb2N1bWVudGF0aW9uIGZyb20gT3BlbkFQSS9Td2FnZ2VyIGRvY3VtZW50cy4gW1RyeSBvdXIgRGVtb10oaHR0cHM6Ly9kb2NzLnNjYWxhci5jb20vc3dhZ2dlci1lZGl0b3IpCgo8aW1nIHdpZHRoPSI4MzAiIGhlaWdodD0iNDU1IiBzcmM9Imh0dHBzOi8vZ2l0aHViLmNvbS9zY2FsYXIvc2NhbGFyL2Fzc2V0cy82MjAxNDA3LzA0NmFhZWNhLWYwZmUtNDUzZC1hNjYxLWM3NDczOTljNTZlZiI+CgojIyBGZWF0dXJlcwoKLSBVc2VzIE9wZW5BUEkvU3dhZ2dlciBkb2N1bWVudHMKLSBSZXF1ZXN0IGV4YW1wbGVzIGZvciBtYW55IGZhdm9yaXRlIGxhbmd1YWdlcyBhbmQgZnJhbWV3b3JrcwotIENvbWVzIHdpdGggYW4gaW50ZWdyYXRlZCBBUEkgY2xpZW50Ci0gSW50ZWdyYXRlcyB3aXRoIHlvdXIgZmF2b3JpdGUgZnJhbWV3b3JrCi0gRG9lc27igJl0IGxvb2sgbGlrZSBpdOKAmXMgMjAxMQoKIyMgUXVpY2tzdGFydAoKWW914oCZcmUganVzdCBvbmUgSFRNTCBmaWxlIGF3YXkgZnJvbSBoYXZpbmcgYW4gYXdlc29tZSBBUEkgcmVmZXJlbmNlOgoKYGBgaHRtbAo8IWRvY3R5cGUgaHRtbD4KPGh0bWw+CiAgPGhlYWQ+CiAgICA8dGl0bGU+U2NhbGFyIEFQSSBSZWZlcmVuY2U8L3RpdGxlPgogICAgPG1ldGEgY2hhcnNldD0idXRmLTgiIC8+CiAgICA8bWV0YQogICAgICBuYW1lPSJ2aWV3cG9ydCIKICAgICAgY29udGVudD0id2lkdGg9ZGV2aWNlLXdpZHRoLCBpbml0aWFsLXNjYWxlPTEiIC8+CiAgPC9oZWFkPgogIDxib2R5PgogICAgPCEtLSBOZWVkIGEgQ3VzdG9tIEhlYWRlcj8gQ2hlY2sgb3V0IHRoaXMgZXhhbXBsZSBodHRwczovL2NvZGVwZW4uaW8vc2NhbGFyb3JnL3Blbi9Wd09YcWFtIC0tPgogICAgPHNjcmlwdAogICAgICBpZD0iYXBpLXJlZmVyZW5jZSIKICAgICAgZGF0YS11cmw9Imh0dHBzOi8vY2RuLmpzZGVsaXZyLm5ldC9ucG0vQHNjYWxhci9nYWxheHkvZGlzdC9sYXRlc3QueWFtbCI+PC9zY3JpcHQ+CiAgICA8c2NyaXB0IHNyYz0iaHR0cHM6Ly9jZG4uanNkZWxpdnIubmV0L25wbS9Ac2NhbGFyL2FwaS1yZWZlcmVuY2UiPjwvc2NyaXB0PgogIDwvYm9keT4KPC9odG1sPgpgYGAKCkFuZCB0aGVyZeKAmXMgYW4gZXZlci1ncm93aW5nIGxpc3Qgb2YgcGx1Z2lucyBhbmQgaW50ZWdyYXRpb25zOgoKIyMgSW50ZWdyYXRpb25zCgotIFtIVE1MXShkb2N1bWVudGF0aW9uL2ludGVncmF0aW9ucy9odG1sLm1kKQotIFsuTkVUXShwYWNrYWdlcy9zY2FsYXIuYXNwbmV0Y29yZS9SRUFETUUubWQpCi0gW0Fkb25pc0pTXShkb2N1bWVudGF0aW9uL2ludGVncmF0aW9ucy9hZG9uaXNqcy5tZCkKLSBbRG9jdXNhdXJ1c10ocGFja2FnZXMvZG9jdXNhdXJ1cy9SRUFETUUubWQpCi0gW0VseXNpYUpTXShkb2N1bWVudGF0aW9uL2ludGVncmF0aW9ucy9lbHlzaWFqcy5tZCkKLSBbRXhwcmVzc10ocGFja2FnZXMvZXhwcmVzcy1hcGktcmVmZXJlbmNlL1JFQURNRS5tZCkKLSBbRmFzdEFQSV0ocGFja2FnZXMvc2NhbGFyX2Zhc3RhcGkvUkVBRE1FLm1kKQotIFtGYXN0aWZ5XShwYWNrYWdlcy9mYXN0aWZ5LWFwaS1yZWZlcmVuY2UvUkVBRE1FLm1kKQotIFtHb10oZG9jdW1lbnRhdGlvbi9pbnRlZ3JhdGlvbnMvZ28ubWQpCi0gW0hvbm9dKHBhY2thZ2VzL2hvbm8tYXBpLXJlZmVyZW5jZS9SRUFETUUubWQpCi0gW0xhcmF2ZWxdKGRvY3VtZW50YXRpb24vaW50ZWdyYXRpb25zL2xhcmF2ZWwubWQpCi0gW0xpdGVzdGFyXShodHRwczovL2RvY3MubGl0ZXN0YXIuZGV2L2xhdGVzdC91c2FnZS9vcGVuYXBpL3VpX3BsdWdpbnMuaHRtbCkKLSBbTmVzdEpTXShwYWNrYWdlcy9uZXN0anMtYXBpLXJlZmVyZW5jZS9SRUFETUUubWQpCi0gW05leHQuanNdKHBhY2thZ2VzL25leHRqcy1hcGktcmVmZXJlbmNlL1JFQURNRS5tZCkKLSBbTml0cm9dKGRvY3VtZW50YXRpb24vaW50ZWdyYXRpb25zL25pdHJvLm1kKQotIFtOdXh0XShwYWNrYWdlcy9udXh0L1JFQURNRS5tZCkKLSBbUGxhdGZvcm1hdGljXShkb2N1bWVudGF0aW9uL2ludGVncmF0aW9ucy9wbGF0Zm9ybWF0aWMubWQpCi0gW1JlYWN0XShwYWNrYWdlcy9hcGktcmVmZXJlbmNlLXJlYWN0L1JFQURNRS5tZCkKLSBbUnVzdF0oZG9jdW1lbnRhdGlvbi9pbnRlZ3JhdGlvbnMvcnVzdC5tZCkKLSBbVnVlLmpzXShwYWNrYWdlcy9hcGktcmVmZXJlbmNlL1JFQURNRS5tZCkKCiMjIE1hbmFnZWQgSG9zdGluZwoKV2XigJlyZSBvZmZlcmluZyBhIGZyZWUgYW5kIHBhaWQgbWFuYWdlZCBob3N0aW5nIG9uIHRoZSBlZGdlLCB0b286CgotIFdyaXRlIHlvdXIgQVBJIGRvY3VtZW50YXRpb24gYW5kIHB1Ymxpc2ggeW91ciBBUEkgcmVmZXJlbmNlcyAoZnJlZSkKLSBHZXQgU1NMIGFuZCBhIHN1cGVyIGNvb2wgYCouYXBpZG9jdW1lbnRhdGlvbi5jb21gIHN1YmRvbWFpbiAoZnJlZSkKLSBXcml0ZSBmcmVlIHRleHQgZG9jdW1lbnRhdGlvbiAocGFpZCkKLSBDb2xsYWJvcmF0ZSB3aXRoIHlvdXIgd2hvbGUgdGVhbSAocGFpZCkKLSBVc2UgYW55IGRvbWFpbiAocGFpZCkKClJlYWR5PyBbQ3JlYXRlIHlvdXIgYWNjb3VudCBvbiBzY2FsYXIuY29tXShodHRwczovL3NjYWxhci5jb20pLgoKIyMgUHJvamVjdHMKCnwgUHJvamVjdCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgRGVzY3JpcHRpb24gICAgICAgICAgICB8CnwgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tIHwgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSB8CnwgW1NjYWxhciBBUEkgQ2xpZW50XShwYWNrYWdlcy9hcGktY2xpZW50L1JFQURNRS5tZCkgICAgICAgICAgICAgICAgIHwgQVBJIGNsaWVudCAgICAgICAgICAgICB8CnwgW1NjYWxhciBDTEldKHBhY2thZ2VzL2NsaS9SRUFETUUubWQpICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgQ29tbWFuZC1saW5lIGludGVyZmFjZSB8CnwgW1NjYWxhciBHYWxheHldKHBhY2thZ2VzL2dhbGF4eS9SRUFETUUubWQpICAgICAgICAgICAgICAgICAgICAgICAgIHwgT3BlbkFQSSBFeGFtcGxlICAgICAgICB8CnwgW1NjYWxhciBQbGF5IEJ1dHRvbl0ocGFja2FnZXMvcGxheS1idXR0b24vUkVBRE1FLm1kKSAgICAgICAgICAgICAgIHwgUXVpY2sgQVBJIENsaWVudCBFbWJlZCB8CnwgW1NjYWxhciBNb2NrIFNlcnZlcl0ocGFja2FnZXMvbW9jay1zZXJ2ZXIvUkVBRE1FLm1kKSAgICAgICAgICAgICAgIHwgT3BlbkFQSSBNb2NrIFNlcnZlciAgICB8CnwgW1NjYWxhciBWb2lkIFNlcnZlcl0ocGFja2FnZXMvdm9pZC1zZXJ2ZXIvUkVBRE1FLm1kKSAgICAgICAgICAgICAgIHwgSFRUUCBSZXF1ZXN0IE1pcnJvciAgICB8CnwgW1NjYWxhciBPcGVuIEFQSSBQYXJzZXJdKGh0dHBzOi8vZ2l0aHViLmNvbS9zY2FsYXIvb3BlbmFwaS1wYXJzZXIpIHwgT3BlbkFQSSBTREsgICAgICAgICAgICB8CnwgW1NjYWxhciBTYW5kYm94XShodHRwczovL3NhbmRib3guc2NhbGFyLmNvbS8pICAgICAgICAgICAgICAgICAgICAgIHwgT25saW5lIE9wZW5BUEkgRWRpdG9yICB8CgojIyBEb2N1bWVudGF0aW9uCgp8IFRvcGljICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgRGVzY3JpcHRpb24gICAgICAgICAgICAgICAgICAgICAgICB8CnwgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gfCAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tIHwKfCBbVGhlbWVzXShkb2N1bWVudGF0aW9uL3RoZW1lcy5tZCkgICAgICAgICAgICAgICB8IFRoZW1lcywgbGF5b3V0cyAmIHN0eWxpbmcgICAgICAgICAgfAp8IFtDb25maWd1cmF0aW9uXShkb2N1bWVudGF0aW9uL2NvbmZpZ3VyYXRpb24ubWQpIHwgVGhlIHVuaXZlcnNhbCBjb25maWd1cmF0aW9uIG9iamVjdCB8CnwgW09wZW5BUEldKGRvY3VtZW50YXRpb24vb3BlbmFwaS5tZCkgICAgICAgICAgICAgfCBPcGVuQVBJIGFuZCBvdXIgZXh0ZW5zaW9ucyB0byBpdCAgIHwKfCBbTWFya2Rvd25dKGRvY3VtZW50YXRpb24vbWFya2Rvd24ubWQpICAgICAgICAgICB8IE1hcmtkb3duIHN5bnRheCAgICAgICAgICAgICAgICAgICAgfAoKIyMgQ29tbXVuaXR5CgpXZSBhcmUgQVBJIG5lcmRzLiBZb3UgdG9vPyBMZXTigJlzIGNoYXQgb24gRGlzY29yZDogPGh0dHBzOi8vZGlzY29yZC5nZy9zY2FsYXI+Cgo+IFshTk9URV1cCj4gW1NjYWxhciBUb3duaGFsbCBldmVyeSAybmQgVGh1cnNkYXkgaW4gRGlzY29yZF0oaHR0cHM6Ly9kaXNjb3JkLmdnL3NjYWxhcj9ldmVudD0xMjE5MzYzMzg1NDg1ODI0MDAwKQo+Cj4gSm9pbiB1cyB0byBzZWUgdXBjb21pbmcgZmVhdHVyZXMsIGRpc2N1c3MgdGhlIHJvYWRtYXAgYW5kIGNoYXQgYWJvdXQgQVBJcy4g8J+SrAoKIyMgQ29udHJpYnV0b3JzCgpDb250cmlidXRpb25zIGFyZSB3ZWxjb21lISBSZWFkIHRoZSBbYENPTlRSSUJVVElOR2BdKGh0dHBzOi8vZ2l0aHViLmNvbS9zY2FsYXIvc2NhbGFyL2Jsb2IvbWFpbi9DT05UUklCVVRJTkcpIGd1aWRlLgoKPCEtLSByZWFkbWU6IGNvbGxhYm9yYXRvcnMsY29udHJpYnV0b3JzIC1zdGFydCAtLT4KPHRhYmxlPgoJPHRib2R5PgoJCTx0cj4KICAgICAgICAgICAgPHRkIGFsaWduPSJjZW50ZXIiPgogICAgICAgICAgICAgICAgPGEgaHJlZj0iaHR0cHM6Ly9naXRodWIuY29tL2hhbnNwYWdlbCI+CiAgICAgICAgICAgICAgICAgICAgPGltZyBzcmM9Imh0dHBzOi8vYXZhdGFycy5naXRodWJ1c2VyY29udGVudC5jb20vdS8xNTc3OTkyP3Y9NCIgd2lkdGg9IjEwMDsiIGFsdD0iaGFuc3BhZ2VsIi8+CiAgICAgICAgICAgICAgICAgICAgPGJyIC8+CiAgICAgICAgICAgICAgICAgICAgPHN1Yj48Yj5oYW5zcGFnZWw8L2I+PC9zdWI+CiAgICAgICAgICAgICAgICA8L2E+CiAgICAgICAgICAgIDwvdGQ+CiAgICAgICAgICAgIDx0ZCBhbGlnbj0iY2VudGVyIj4KICAgICAgICAgICAgICAgIDxhIGhyZWY9Imh0dHBzOi8vZ2l0aHViLmNvbS9hbXJpdGsiPgogICAgICAgICAgICAgICAgICAgIDxpbWcgc3JjPSJodHRwczovL2F2YXRhcnMuZ2l0aHVidXNlcmNvbnRlbnQuY29tL3UvMjAzOTUzOT92PTQiIHdpZHRoPSIxMDA7IiBhbHQ9ImFtcml0ayIvPgogICAgICAgICAgICAgICAgICAgIDxiciAvPgogICAgICAgICAgICAgICAgICAgIDxzdWI+PGI+YW1yaXRrPC9iPjwvc3ViPgogICAgICAgICAgICAgICAgPC9hPgogICAgICAgICAgICA8L3RkPgogICAgICAgICAgICA8dGQgYWxpZ249ImNlbnRlciI+CiAgICAgICAgICAgICAgICA8YSBocmVmPSJodHRwczovL2dpdGh1Yi5jb20vdG1hc3Ryb20iPgogICAgICAgICAgICAgICAgICAgIDxpbWcgc3JjPSJodHRwczovL2F2YXRhcnMuZ2l0aHVidXNlcmNvbnRlbnQuY29tL3UvMzY1MjUzMjk/dj00IiB3aWR0aD0iMTAwOyIgYWx0PSJ0bWFzdHJvbSIvPgogICAgICAgICAgICAgICAgICAgIDxiciAvPgogICAgICAgICAgICAgICAgICAgIDxzdWI+PGI+dG1hc3Ryb208L2I+PC9zdWI+CiAgICAgICAgICAgICAgICA8L2E+CiAgICAgICAgICAgIDwvdGQ+CiAgICAgICAgICAgIDx0ZCBhbGlnbj0iY2VudGVyIj4KICAgICAgICAgICAgICAgIDxhIGhyZWY9Imh0dHBzOi8vZ2l0aHViLmNvbS9tYXJjbGF2ZSI+CiAgICAgICAgICAgICAgICAgICAgPGltZyBzcmM9Imh0dHBzOi8vYXZhdGFycy5naXRodWJ1c2VyY29udGVudC5jb20vdS82MTc2MzE0P3Y9NCIgd2lkdGg9IjEwMDsiIGFsdD0ibWFyY2xhdmUiLz4KICAgICAgICAgICAgICAgICAgICA8YnIgLz4KICAgICAgICAgICAgICAgICAgICA8c3ViPjxiPm1hcmNsYXZlPC9iPjwvc3ViPgogICAgICAgICAgICAgICAgPC9hPgogICAgICAgICAgICA8L3RkPgogICAgICAgICAgICA8dGQgYWxpZ249ImNlbnRlciI+CiAgICAgICAgICAgICAgICA8YSBocmVmPSJodHRwczovL2dpdGh1Yi5jb20vaHdrciI+CiAgICAgICAgICAgICAgICAgICAgPGltZyBzcmM9Imh0dHBzOi8vYXZhdGFycy5naXRodWJ1c2VyY29udGVudC5jb20vdS82Mzc0MDkwP3Y9NCIgd2lkdGg9IjEwMDsiIGFsdD0iaHdrciIvPgogICAgICAgICAgICAgICAgICAgIDxiciAvPgogICAgICAgICAgICAgICAgICAgIDxzdWI+PGI+aHdrcjwvYj48L3N1Yj4KICAgICAgICAgICAgICAgIDwvYT4KICAgICAgICAgICAgPC90ZD4KICAgICAgICAgICAgPHRkIGFsaWduPSJjZW50ZXIiPgogICAgICAgICAgICAgICAgPGEgaHJlZj0iaHR0cHM6Ly9naXRodWIuY29tL2FudGxpbyI+CiAgICAgICAgICAgICAgICAgICAgPGltZyBzcmM9Imh0dHBzOi8vYXZhdGFycy5naXRodWJ1c2VyY29udGVudC5jb20vdS8xNDk2NjE1NT92PTQiIHdpZHRoPSIxMDA7IiBhbHQ9ImFudGxpbyIvPgogICAgICAgICAgICAgICAgICAgIDxiciAvPgogICAgICAgICAgICAgICAgICAgIDxzdWI+PGI+YW50bGlvPC9iPjwvc3ViPgogICAgICAgICAgICAgICAgPC9hPgogICAgICAgICAgICA8L3RkPgoJCTwvdHI+CgkJPHRyPgogICAgICAgICAgICA8dGQgYWxpZ249ImNlbnRlciI+CiAgICAgICAgICAgICAgICA8YSBocmVmPSJodHRwczovL2dpdGh1Yi5jb20vY2FtZXJvbnJvaGFuaSI+CiAgICAgICAgICAgICAgICAgICAgPGltZyBzcmM9Imh0dHBzOi8vYXZhdGFycy5naXRodWJ1c2VyY29udGVudC5jb20vdS82MjAxNDA3P3Y9NCIgd2lkdGg9IjEwMDsiIGFsdD0iY2FtZXJvbnJvaGFuaSIvPgogICAgICAgICAgICAgICAgICAgIDxiciAvPgogICAgICAgICAgICAgICAgICAgIDxzdWI+PGI+Y2FtZXJvbnJvaGFuaTwvYj48L3N1Yj4KICAgICAgICAgICAgICAgIDwvYT4KICAgICAgICAgICAgPC90ZD4KICAgICAgICAgICAgPHRkIGFsaWduPSJjZW50ZXIiPgogICAgICAgICAgICAgICAgPGEgaHJlZj0iaHR0cHM6Ly9naXRodWIuY29tL2dlb2ZmZ3Njb3R0Ij4KICAgICAgICAgICAgICAgICAgICA8aW1nIHNyYz0iaHR0cHM6Ly9hdmF0YXJzLmdpdGh1YnVzZXJjb250ZW50LmNvbS91LzU5MjA2MTAwP3Y9NCIgd2lkdGg9IjEwMDsiIGFsdD0iZ2VvZmZnc2NvdHQiLz4KICAgICAgICAgICAgICAgICAgICA8YnIgLz4KICAgICAgICAgICAgICAgICAgICA8c3ViPjxiPmdlb2ZmZ3Njb3R0PC9iPjwvc3ViPgogICAgICAgICAgICAgICAgPC9hPgogICAgICAgICAgICA8L3RkPgogICAgICAgICAgICA8dGQgYWxpZ249ImNlbnRlciI+CiAgICAgICAgICAgICAgICA8YSBocmVmPSJodHRwczovL2dpdGh1Yi5jb20vaW55b3VydGltZSI+CiAgICAgICAgICAgICAgICAgICAgPGltZyBzcmM9Imh0dHBzOi8vYXZhdGFycy5naXRodWJ1c2VyY29udGVudC5jb20vdS82NjExMTAzMD92PTQiIHdpZHRoPSIxMDA7IiBhbHQ9ImlueW91cnRpbWUiLz4KICAgICAgICAgICAgICAgICAgICA8YnIgLz4KICAgICAgICAgICAgICAgICAgICA8c3ViPjxiPmlueW91cnRpbWU8L2I+PC9zdWI+CiAgICAgICAgICAgICAgICA8L2E+CiAgICAgICAgICAgIDwvdGQ+CiAgICAgICAgICAgIDx0ZCBhbGlnbj0iY2VudGVyIj4KICAgICAgICAgICAgICAgIDxhIGhyZWY9Imh0dHBzOi8vZ2l0aHViLmNvbS9BbW9yaW0zMyI+CiAgICAgICAgICAgICAgICAgICAgPGltZyBzcmM9Imh0dHBzOi8vYXZhdGFycy5naXRodWJ1c2VyY29udGVudC5jb20vdS80MjYyNDg2OT92PTQiIHdpZHRoPSIxMDA7IiBhbHQ9IkFtb3JpbTMzIi8+CiAgICAgICAgICAgICAgICAgICAgPGJyIC8+CiAgICAgICAgICAgICAgICAgICAgPHN1Yj48Yj5BbW9yaW0zMzwvYj48L3N1Yj4KICAgICAgICAgICAgICAgIDwvYT4KICAgICAgICAgICAgPC90ZD4KICAgICAgICAgICAgPHRkIGFsaWduPSJjZW50ZXIiPgogICAgICAgICAgICAgICAgPGEgaHJlZj0iaHR0cHM6Ly9naXRodWIuY29tL2FkanNreSI+CiAgICAgICAgICAgICAgICAgICAgPGltZyBzcmM9Imh0dHBzOi8vYXZhdGFycy5naXRodWJ1c2VyY29udGVudC5jb20vdS80OTMwNTIxOT92PTQiIHdpZHRoPSIxMDA7IiBhbHQ9ImFkanNreSIvPgogICAgICAgICAgICAgICAgICAgIDxiciAvPgogICAgICAgICAgICAgICAgICAgIDxzdWI+PGI+YWRqc2t5PC9iPjwvc3ViPgogICAgICAgICAgICAgICAgPC9hPgogICAgICAgICAgICA8L3RkPgogICAgICAgICAgICA8dGQgYWxpZ249ImNlbnRlciI+CiAgICAgICAgICAgICAgICA8YSBocmVmPSJodHRwczovL2dpdGh1Yi5jb20vQVRSRUFZIj4KICAgICAgICAgICAgICAgICAgICA8aW1nIHNyYz0iaHR0cHM6Ly9hdmF0YXJzLmdpdGh1YnVzZXJjb250ZW50LmNvbS91LzY2NTg1Mjk1P3Y9NCIgd2lkdGg9IjEwMDsiIGFsdD0iQVRSRUFZIi8+CiAgICAgICAgICAgICAgICAgICAgPGJyIC8+CiAgICAgICAgICAgICAgICAgICAgPHN1Yj48Yj5BVFJFQVk8L2I+PC9zdWI+CiAgICAgICAgICAgICAgICA8L2E+CiAgICAgICAgICAgIDwvdGQ+CgkJPC90cj4KCQk8dHI+CiAgICAgICAgICAgIDx0ZCBhbGlnbj0iY2VudGVyIj4KICAgICAgICAgICAgICAgIDxhIGhyZWY9Imh0dHBzOi8vZ2l0aHViLmNvbS9Nb2hpYjgzNCI+CiAgICAgICAgICAgICAgICAgICAgPGltZyBzcmM9Imh0dHBzOi8vYXZhdGFycy5naXRodWJ1c2VyY29udGVudC5jb20vdS80NzMxNjQ2ND92PTQiIHdpZHRoPSIxMDA7IiBhbHQ9Ik1vaGliODM0Ii8+CiAgICAgICAgICAgICAgICAgICAgPGJyIC8+CiAgICAgICAgICAgICAgICAgICAgPHN1Yj48Yj5Nb2hpYjgzNDwvYj48L3N1Yj4KICAgICAgICAgICAgICAgIDwvYT4KICAgICAgICAgICAgPC90ZD4KICAgICAgICAgICAgPHRkIGFsaWduPSJjZW50ZXIiPgogICAgICAgICAgICAgICAgPGEgaHJlZj0iaHR0cHM6Ly9naXRodWIuY29tL21jb2xsaW5hIj4KICAgICAgICAgICAgICAgICAgICA8aW1nIHNyYz0iaHR0cHM6Ly9hdmF0YXJzLmdpdGh1YnVzZXJjb250ZW50LmNvbS91LzUyMTk1P3Y9NCIgd2lkdGg9IjEwMDsiIGFsdD0ibWNvbGxpbmEiLz4KICAgICAgICAgICAgICAgICAgICA8YnIgLz4KICAgICAgICAgICAgICAgICAgICA8c3ViPjxiPm1jb2xsaW5hPC9iPjwvc3ViPgogICAgICAgICAgICAgICAgPC9hPgogICAgICAgICAgICA8L3RkPgogICAgICAgICAgICA8dGQgYWxpZ249ImNlbnRlciI+CiAgICAgICAgICAgICAgICA8YSBocmVmPSJodHRwczovL2dpdGh1Yi5jb20vbXBtaW5hcmRpIj4KICAgICAgICAgICAgICAgICAgICA8aW1nIHNyYz0iaHR0cHM6Ly9hdmF0YXJzLmdpdGh1YnVzZXJjb250ZW50LmNvbS91Lzg1ODc1Njc/dj00IiB3aWR0aD0iMTAwOyIgYWx0PSJtcG1pbmFyZGkiLz4KICAgICAgICAgICAgICAgICAgICA8YnIgLz4KICAgICAgICAgICAgICAgICAgICA8c3ViPjxiPm1wbWluYXJkaTwvYj48L3N1Yj4KICAgICAgICAgICAgICAgIDwvYT4KICAgICAgICAgICAgPC90ZD4KICAgICAgICAgICAgPHRkIGFsaWduPSJjZW50ZXIiPgogICAgICAgICAgICAgICAgPGEgaHJlZj0iaHR0cHM6Ly9naXRodWIuY29tL3NvdWxjaGlsZCI+CiAgICAgICAgICAgICAgICAgICAgPGltZyBzcmM9Imh0dHBzOi8vYXZhdGFycy5naXRodWJ1c2VyY29udGVudC5jb20vdS81OTY0Mj92PTQiIHdpZHRoPSIxMDA7IiBhbHQ9InNvdWxjaGlsZCIvPgogICAgICAgICAgICAgICAgICAgIDxiciAvPgogICAgICAgICAgICAgICAgICAgIDxzdWI+PGI+c291bGNoaWxkPC9iPjwvc3ViPgogICAgICAgICAgICAgICAgPC9hPgogICAgICAgICAgICA8L3RkPgogICAgICAgICAgICA8dGQgYWxpZ249ImNlbnRlciI+CiAgICAgICAgICAgICAgICA8YSBocmVmPSJodHRwczovL2dpdGh1Yi5jb20vaGV4MGlkIj4KICAgICAgICAgICAgICAgICAgICA8aW1nIHNyYz0iaHR0cHM6Ly9hdmF0YXJzLmdpdGh1YnVzZXJjb250ZW50LmNvbS91LzUyNzYyNjE/dj00IiB3aWR0aD0iMTAwOyIgYWx0PSJoZXgwaWQiLz4KICAgICAgICAgICAgICAgICAgICA8YnIgLz4KICAgICAgICAgICAgICAgICAgICA8c3ViPjxiPmhleDBpZDwvYj48L3N1Yj4KICAgICAgICAgICAgICAgIDwvYT4KICAgICAgICAgICAgPC90ZD4KICAgICAgICAgICAgPHRkIGFsaWduPSJjZW50ZXIiPgogICAgICAgICAgICAgICAgPGEgaHJlZj0iaHR0cHM6Ly9naXRodWIuY29tL3lrZG9qbyI+CiAgICAgICAgICAgICAgICAgICAgPGltZyBzcmM9Imh0dHBzOi8vYXZhdGFycy5naXRodWJ1c2VyY29udGVudC5jb20vdS8xODExNjUxP3Y9NCIgd2lkdGg9IjEwMDsiIGFsdD0ieWtkb2pvIi8+CiAgICAgICAgICAgICAgICAgICAgPGJyIC8+CiAgICAgICAgICAgICAgICAgICAgPHN1Yj48Yj55a2Rvam88L2I+PC9zdWI+CiAgICAgICAgICAgICAgICA8L2E+CiAgICAgICAgICAgIDwvdGQ+CgkJPC90cj4KCQk8dHI+CiAgICAgICAgICAgIDx0ZCBhbGlnbj0iY2VudGVyIj4KICAgICAgICAgICAgICAgIDxhIGhyZWY9Imh0dHBzOi8vZ2l0aHViLmNvbS9FZGdhcmFzenMiPgogICAgICAgICAgICAgICAgICAgIDxpbWcgc3JjPSJodHRwczovL2F2YXRhcnMuZ2l0aHVidXNlcmNvbnRlbnQuY29tL3UvNTU2OTYyNjg/dj00IiB3aWR0aD0iMTAwOyIgYWx0PSJFZGdhcmFzenMiLz4KICAgICAgICAgICAgICAgICAgICA8YnIgLz4KICAgICAgICAgICAgICAgICAgICA8c3ViPjxiPkVkZ2FyYXN6czwvYj48L3N1Yj4KICAgICAgICAgICAgICAgIDwvYT4KICAgICAgICAgICAgPC90ZD4KICAgICAgICAgICAgPHRkIGFsaWduPSJjZW50ZXIiPgogICAgICAgICAgICAgICAgPGEgaHJlZj0iaHR0cHM6Ly9naXRodWIuY29tL2ZlZGVyaWNvYm9uZCI+CiAgICAgICAgICAgICAgICAgICAgPGltZyBzcmM9Imh0dHBzOi8vYXZhdGFycy5naXRodWJ1c2VyY29udGVudC5jb20vdS8xMzg0MjY/dj00IiB3aWR0aD0iMTAwOyIgYWx0PSJmZWRlcmljb2JvbmQiLz4KICAgICAgICAgICAgICAgICAgICA8YnIgLz4KICAgICAgICAgICAgICAgICAgICA8c3ViPjxiPmZlZGVyaWNvYm9uZDwvYj48L3N1Yj4KICAgICAgICAgICAgICAgIDwvYT4KICAgICAgICAgICAgPC90ZD4KICAgICAgICAgICAgPHRkIGFsaWduPSJjZW50ZXIiPgogICAgICAgICAgICAgICAgPGEgaHJlZj0iaHR0cHM6Ly9naXRodWIuY29tL2dzbWNkb25hbGQiPgogICAgICAgICAgICAgICAgICAgIDxpbWcgc3JjPSJodHRwczovL2F2YXRhcnMuZ2l0aHVidXNlcmNvbnRlbnQuY29tL3UvMzYwMDMzNzg/dj00IiB3aWR0aD0iMTAwOyIgYWx0PSJnc21jZG9uYWxkIi8+CiAgICAgICAgICAgICAgICAgICAgPGJyIC8+CiAgICAgICAgICAgICAgICAgICAgPHN1Yj48Yj5nc21jZG9uYWxkPC9iPjwvc3ViPgogICAgICAgICAgICAgICAgPC9hPgogICAgICAgICAgICA8L3RkPgogICAgICAgICAgICA8dGQgYWxpZ249ImNlbnRlciI+CiAgICAgICAgICAgICAgICA8YSBocmVmPSJodHRwczovL2dpdGh1Yi5jb20vbW91aGFubmFkLXNoIj4KICAgICAgICAgICAgICAgICAgICA8aW1nIHNyYz0iaHR0cHM6Ly9hdmF0YXJzLmdpdGh1YnVzZXJjb250ZW50LmNvbS91LzE4NDk1NzQwP3Y9NCIgd2lkdGg9IjEwMDsiIGFsdD0ibW91aGFubmFkLXNoIi8+CiAgICAgICAgICAgICAgICAgICAgPGJyIC8+CiAgICAgICAgICAgICAgICAgICAgPHN1Yj48Yj5tb3VoYW5uYWQtc2g8L2I+PC9zdWI+CiAgICAgICAgICAgICAgICA8L2E+CiAgICAgICAgICAgIDwvdGQ+CiAgICAgICAgICAgIDx0ZCBhbGlnbj0iY2VudGVyIj4KICAgICAgICAgICAgICAgIDxhIGhyZWY9Imh0dHBzOi8vZ2l0aHViLmNvbS9tYXNvbi1hdC1waWVjZXMiPgogICAgICAgICAgICAgICAgICAgIDxpbWcgc3JjPSJodHRwczovL2F2YXRhcnMuZ2l0aHVidXNlcmNvbnRlbnQuY29tL3UvMTIzNDIxMDg1P3Y9NCIgd2lkdGg9IjEwMDsiIGFsdD0ibWFzb24tYXQtcGllY2VzIi8+CiAgICAgICAgICAgICAgICAgICAgPGJyIC8+CiAgICAgICAgICAgICAgICAgICAgPHN1Yj48Yj5tYXNvbi1hdC1waWVjZXM8L2I+PC9zdWI+CiAgICAgICAgICAgICAgICA8L2E+CiAgICAgICAgICAgIDwvdGQ+CiAgICAgICAgICAgIDx0ZCBhbGlnbj0iY2VudGVyIj4KICAgICAgICAgICAgICAgIDxhIGhyZWY9Imh0dHBzOi8vZ2l0aHViLmNvbS9NYXNvbi1MaXR0bGUiPgogICAgICAgICAgICAgICAgICAgIDxpbWcgc3JjPSJodHRwczovL2F2YXRhcnMuZ2l0aHVidXNlcmNvbnRlbnQuY29tL3UvMTA1MDA4NDQxP3Y9NCIgd2lkdGg9IjEwMDsiIGFsdD0iTWFzb24tTGl0dGxlIi8+CiAgICAgICAgICAgICAgICAgICAgPGJyIC8+CiAgICAgICAgICAgICAgICAgICAgPHN1Yj48Yj5NYXNvbi1MaXR0bGU8L2I+PC9zdWI+CiAgICAgICAgICAgICAgICA8L2E+CiAgICAgICAgICAgIDwvdGQ+CgkJPC90cj4KCQk8dHI+CiAgICAgICAgICAgIDx0ZCBhbGlnbj0iY2VudGVyIj4KICAgICAgICAgICAgICAgIDxhIGhyZWY9Imh0dHBzOi8vZ2l0aHViLmNvbS9NYXhCcmVpZGEiPgogICAgICAgICAgICAgICAgICAgIDxpbWcgc3JjPSJodHRwczovL2F2YXRhcnMuZ2l0aHVidXNlcmNvbnRlbnQuY29tL3UvMTg2ODU1Nzk/dj00IiB3aWR0aD0iMTAwOyIgYWx0PSJNYXhCcmVpZGEiLz4KICAgICAgICAgICAgICAgICAgICA8YnIgLz4KICAgICAgICAgICAgICAgICAgICA8c3ViPjxiPk1heEJyZWlkYTwvYj48L3N1Yj4KICAgICAgICAgICAgICAgIDwvYT4KICAgICAgICAgICAgPC90ZD4KICAgICAgICAgICAgPHRkIGFsaWduPSJjZW50ZXIiPgogICAgICAgICAgICAgICAgPGEgaHJlZj0iaHR0cHM6Ly9naXRodWIuY29tL3JpY2tpaGFzdGluZ3MiPgogICAgICAgICAgICAgICAgICAgIDxpbWcgc3JjPSJodHRwczovL2F2YXRhcnMuZ2l0aHVidXNlcmNvbnRlbnQuY29tL3UvNDU2NjA/dj00IiB3aWR0aD0iMTAwOyIgYWx0PSJyaWNraWhhc3RpbmdzIi8+CiAgICAgICAgICAgICAgICAgICAgPGJyIC8+CiAgICAgICAgICAgICAgICAgICAgPHN1Yj48Yj5yaWNraWhhc3RpbmdzPC9iPjwvc3ViPgogICAgICAgICAgICAgICAgPC9hPgogICAgICAgICAgICA8L3RkPgogICAgICAgICAgICA8dGQgYWxpZ249ImNlbnRlciI+CiAgICAgICAgICAgICAgICA8YSBocmVmPSJodHRwczovL2dpdGh1Yi5jb20vcmJhbmdlIj4KICAgICAgICAgICAgICAgICAgICA8aW1nIHNyYz0iaHR0cHM6Ly9hdmF0YXJzLmdpdGh1YnVzZXJjb250ZW50LmNvbS91LzEzMjUyNTc0P3Y9NCIgd2lkdGg9IjEwMDsiIGFsdD0icmJhbmdlIi8+CiAgICAgICAgICAgICAgICAgICAgPGJyIC8+CiAgICAgICAgICAgICAgICAgICAgPHN1Yj48Yj5yYmFuZ2U8L2I+PC9zdWI+CiAgICAgICAgICAgICAgICA8L2E+CiAgICAgICAgICAgIDwvdGQ+CiAgICAgICAgICAgIDx0ZCBhbGlnbj0iY2VudGVyIj4KICAgICAgICAgICAgICAgIDxhIGhyZWY9Imh0dHBzOi8vZ2l0aHViLmNvbS9TVFA1OTQwIj4KICAgICAgICAgICAgICAgICAgICA8aW1nIHNyYz0iaHR0cHM6Ly9hdmF0YXJzLmdpdGh1YnVzZXJjb250ZW50LmNvbS91LzIxMTQ0MzAzP3Y9NCIgd2lkdGg9IjEwMDsiIGFsdD0iU1RQNTk0MCIvPgogICAgICAgICAgICAgICAgICAgIDxiciAvPgogICAgICAgICAgICAgICAgICAgIDxzdWI+PGI+U1RQNTk0MDwvYj48L3N1Yj4KICAgICAgICAgICAgICAgIDwvYT4KICAgICAgICAgICAgPC90ZD4KICAgICAgICAgICAgPHRkIGFsaWduPSJjZW50ZXIiPgogICAgICAgICAgICAgICAgPGEgaHJlZj0iaHR0cHM6Ly9naXRodWIuY29tL2NhcHRhaW5zYWZpYSI+CiAgICAgICAgICAgICAgICAgICAgPGltZyBzcmM9Imh0dHBzOi8vYXZhdGFycy5naXRodWJ1c2VyY29udGVudC5jb20vdS8xODU3OTkzP3Y9NCIgd2lkdGg9IjEwMDsiIGFsdD0iY2FwdGFpbnNhZmlhIi8+CiAgICAgICAgICAgICAgICAgICAgPGJyIC8+CiAgICAgICAgICAgICAgICAgICAgPHN1Yj48Yj5jYXB0YWluc2FmaWE8L2I+PC9zdWI+CiAgICAgICAgICAgICAgICA8L2E+CiAgICAgICAgICAgIDwvdGQ+CiAgICAgICAgICAgIDx0ZCBhbGlnbj0iY2VudGVyIj4KICAgICAgICAgICAgICAgIDxhIGhyZWY9Imh0dHBzOi8vZ2l0aHViLmNvbS9yZWFsc2FtYSI+CiAgICAgICAgICAgICAgICAgICAgPGltZyBzcmM9Imh0dHBzOi8vYXZhdGFycy5naXRodWJ1c2VyY29udGVudC5jb20vdS80NjQwMzI4ND92PTQiIHdpZHRoPSIxMDA7IiBhbHQ9InJlYWxzYW1hIi8+CiAgICAgICAgICAgICAgICAgICAgPGJyIC8+CiAgICAgICAgICAgICAgICAgICAgPHN1Yj48Yj5yZWFsc2FtYTwvYj48L3N1Yj4KICAgICAgICAgICAgICAgIDwvYT4KICAgICAgICAgICAgPC90ZD4KCQk8L3RyPgoJCTx0cj4KICAgICAgICAgICAgPHRkIGFsaWduPSJjZW50ZXIiPgogICAgICAgICAgICAgICAgPGEgaHJlZj0iaHR0cHM6Ly9naXRodWIuY29tL1NlYmFzdGlhbkJpZW5lcnQiPgogICAgICAgICAgICAgICAgICAgIDxpbWcgc3JjPSJodHRwczovL2F2YXRhcnMuZ2l0aHVidXNlcmNvbnRlbnQuY29tL3UvMTc0NTg3ODU/dj00IiB3aWR0aD0iMTAwOyIgYWx0PSJTZWJhc3RpYW5CaWVuZXJ0Ii8+CiAgICAgICAgICAgICAgICAgICAgPGJyIC8+CiAgICAgICAgICAgICAgICAgICAgPHN1Yj48Yj5TZWJhc3RpYW5CaWVuZXJ0PC9iPjwvc3ViPgogICAgICAgICAgICAgICAgPC9hPgogICAgICAgICAgICA8L3RkPgogICAgICAgICAgICA8dGQgYWxpZ249ImNlbnRlciI+CiAgICAgICAgICAgICAgICA8YSBocmVmPSJodHRwczovL2dpdGh1Yi5jb20vZG90Zm9ydHVuIj4KICAgICAgICAgICAgICAgICAgICA8aW1nIHNyYz0iaHR0cHM6Ly9hdmF0YXJzLmdpdGh1YnVzZXJjb250ZW50LmNvbS91LzExODIyOTU3P3Y9NCIgd2lkdGg9IjEwMDsiIGFsdD0iZG90Zm9ydHVuIi8+CiAgICAgICAgICAgICAgICAgICAgPGJyIC8+CiAgICAgICAgICAgICAgICAgICAgPHN1Yj48Yj5kb3Rmb3J0dW48L2I+PC9zdWI+CiAgICAgICAgICAgICAgICA8L2E+CiAgICAgICAgICAgIDwvdGQ+CiAgICAgICAgICAgIDx0ZCBhbGlnbj0iY2VudGVyIj4KICAgICAgICAgICAgICAgIDxhIGhyZWY9Imh0dHBzOi8vZ2l0aHViLmNvbS9zb0dpdCI+CiAgICAgICAgICAgICAgICAgICAgPGltZyBzcmM9Imh0dHBzOi8vYXZhdGFycy5naXRodWJ1c2VyY29udGVudC5jb20vdS8xMDY4Mjc5OD92PTQiIHdpZHRoPSIxMDA7IiBhbHQ9InNvR2l0Ii8+CiAgICAgICAgICAgICAgICAgICAgPGJyIC8+CiAgICAgICAgICAgICAgICAgICAgPHN1Yj48Yj5zb0dpdDwvYj48L3N1Yj4KICAgICAgICAgICAgICAgIDwvYT4KICAgICAgICAgICAgPC90ZD4KICAgICAgICAgICAgPHRkIGFsaWduPSJjZW50ZXIiPgogICAgICAgICAgICAgICAgPGEgaHJlZj0iaHR0cHM6Ly9naXRodWIuY29tL3NpbmgxMTc4MDEiPgogICAgICAgICAgICAgICAgICAgIDxpbWcgc3JjPSJodHRwczovL2F2YXRhcnMuZ2l0aHVidXNlcmNvbnRlbnQuY29tL3UvNDM2OTY3MTU/dj00IiB3aWR0aD0iMTAwOyIgYWx0PSJzaW5oMTE3ODAxIi8+CiAgICAgICAgICAgICAgICAgICAgPGJyIC8+CiAgICAgICAgICAgICAgICAgICAgPHN1Yj48Yj5zaW5oMTE3ODAxPC9iPjwvc3ViPgogICAgICAgICAgICAgICAgPC9hPgogICAgICAgICAgICA8L3RkPgogICAgICAgICAgICA8dGQgYWxpZ249ImNlbnRlciI+CiAgICAgICAgICAgICAgICA8YSBocmVmPSJodHRwczovL2dpdGh1Yi5jb20vdGhpYmF1bHRsZW91YXkiPgogICAgICAgICAgICAgICAgICAgIDxpbWcgc3JjPSJodHRwczovL2F2YXRhcnMuZ2l0aHVidXNlcmNvbnRlbnQuY29tL3UvMTM4OTQwNTQ/dj00IiB3aWR0aD0iMTAwOyIgYWx0PSJ0aGliYXVsdGxlb3VheSIvPgogICAgICAgICAgICAgICAgICAgIDxiciAvPgogICAgICAgICAgICAgICAgICAgIDxzdWI+PGI+dGhpYmF1bHRsZW91YXk8L2I+PC9zdWI+CiAgICAgICAgICAgICAgICA8L2E+CiAgICAgICAgICAgIDwvdGQ+CiAgICAgICAgICAgIDx0ZCBhbGlnbj0iY2VudGVyIj4KICAgICAgICAgICAgICAgIDxhIGhyZWY9Imh0dHBzOi8vZ2l0aHViLmNvbS90aW1oZXVlciI+CiAgICAgICAgICAgICAgICAgICAgPGltZyBzcmM9Imh0dHBzOi8vYXZhdGFycy5naXRodWJ1c2VyY29udGVudC5jb20vdS80ODIxP3Y9NCIgd2lkdGg9IjEwMDsiIGFsdD0idGltaGV1ZXIiLz4KICAgICAgICAgICAgICAgICAgICA8YnIgLz4KICAgICAgICAgICAgICAgICAgICA8c3ViPjxiPnRpbWhldWVyPC9iPjwvc3ViPgogICAgICAgICAgICAgICAgPC9hPgogICAgICAgICAgICA8L3RkPgoJCTwvdHI+CgkJPHRyPgogICAgICAgICAgICA8dGQgYWxpZ249ImNlbnRlciI+CiAgICAgICAgICAgICAgICA8YSBocmVmPSJodHRwczovL2dpdGh1Yi5jb20vYml0bGFiLXJ1aXpoaSI+CiAgICAgICAgICAgICAgICAgICAgPGltZyBzcmM9Imh0dHBzOi8vYXZhdGFycy5naXRodWJ1c2VyY29udGVudC5jb20vdS8xMTAzODA2MTM/dj00IiB3aWR0aD0iMTAwOyIgYWx0PSJiaXRsYWItcnVpemhpIi8+CiAgICAgICAgICAgICAgICAgICAgPGJyIC8+CiAgICAgICAgICAgICAgICAgICAgPHN1Yj48Yj5iaXRsYWItcnVpemhpPC9iPjwvc3ViPgogICAgICAgICAgICAgICAgPC9hPgogICAgICAgICAgICA8L3RkPgogICAgICAgICAgICA8dGQgYWxpZ249ImNlbnRlciI+CiAgICAgICAgICAgICAgICA8YSBocmVmPSJodHRwczovL2dpdGh1Yi5jb20vQ2hpbmxpbmxlZSI+CiAgICAgICAgICAgICAgICAgICAgPGltZyBzcmM9Imh0dHBzOi8vYXZhdGFycy5naXRodWJ1c2VyY29udGVudC5jb20vdS80OTE1NDYyMj92PTQiIHdpZHRoPSIxMDA7IiBhbHQ9IkNoaW5saW5sZWUiLz4KICAgICAgICAgICAgICAgICAgICA8YnIgLz4KICAgICAgICAgICAgICAgICAgICA8c3ViPjxiPkNoaW5saW5sZWU8L2I+PC9zdWI+CiAgICAgICAgICAgICAgICA8L2E+CiAgICAgICAgICAgIDwvdGQ+CiAgICAgICAgICAgIDx0ZCBhbGlnbj0iY2VudGVyIj4KICAgICAgICAgICAgICAgIDxhIGhyZWY9Imh0dHBzOi8vZ2l0aHViLmNvbS9XaWxsaWFtQm9udmluaSI+CiAgICAgICAgICAgICAgICAgICAgPGltZyBzcmM9Imh0dHBzOi8vYXZhdGFycy5naXRodWJ1c2VyY29udGVudC5jb20vdS8zNzgzNDE1MD92PTQiIHdpZHRoPSIxMDA7IiBhbHQ9IldpbGxpYW1Cb252aW5pIi8+CiAgICAgICAgICAgICAgICAgICAgPGJyIC8+CiAgICAgICAgICAgICAgICAgICAgPHN1Yj48Yj5XaWxsaWFtQm9udmluaTwvYj48L3N1Yj4KICAgICAgICAgICAgICAgIDwvYT4KICAgICAgICAgICAgPC90ZD4KICAgICAgICAgICAgPHRkIGFsaWduPSJjZW50ZXIiPgogICAgICAgICAgICAgICAgPGEgaHJlZj0iaHR0cHM6Ly9naXRodWIuY29tL3gtZGVsZmlubyI+CiAgICAgICAgICAgICAgICAgICAgPGltZyBzcmM9Imh0dHBzOi8vYXZhdGFycy5naXRodWJ1c2VyY29udGVudC5jb20vdS82NzE5MjU3OT92PTQiIHdpZHRoPSIxMDA7IiBhbHQ9IngtZGVsZmlubyIvPgogICAgICAgICAgICAgICAgICAgIDxiciAvPgogICAgICAgICAgICAgICAgICAgIDxzdWI+PGI+eC1kZWxmaW5vPC9iPjwvc3ViPgogICAgICAgICAgICAgICAgPC9hPgogICAgICAgICAgICA8L3RkPgogICAgICAgICAgICA8dGQgYWxpZ249ImNlbnRlciI+CiAgICAgICAgICAgICAgICA8YSBocmVmPSJodHRwczovL2dpdGh1Yi5jb20vRm90aWVNQ29uc3RhbnQiPgogICAgICAgICAgICAgICAgICAgIDxpbWcgc3JjPSJodHRwczovL2F2YXRhcnMuZ2l0aHVidXNlcmNvbnRlbnQuY29tL3UvNDIzNzI2NTY/dj00IiB3aWR0aD0iMTAwOyIgYWx0PSJGb3RpZU1Db25zdGFudCIvPgogICAgICAgICAgICAgICAgICAgIDxiciAvPgogICAgICAgICAgICAgICAgICAgIDxzdWI+PGI+Rm90aWVNQ29uc3RhbnQ8L2I+PC9zdWI+CiAgICAgICAgICAgICAgICA8L2E+CiAgICAgICAgICAgIDwvdGQ+CiAgICAgICAgICAgIDx0ZCBhbGlnbj0iY2VudGVyIj4KICAgICAgICAgICAgICAgIDxhIGhyZWY9Imh0dHBzOi8vZ2l0aHViLmNvbS90c2l3ZWstcGl3aWsiPgogICAgICAgICAgICAgICAgICAgIDxpbWcgc3JjPSJodHRwczovL2F2YXRhcnMuZ2l0aHVidXNlcmNvbnRlbnQuY29tL3UvMTE3MzczMzMyP3Y9NCIgd2lkdGg9IjEwMDsiIGFsdD0idHNpd2VrLXBpd2lrIi8+CiAgICAgICAgICAgICAgICAgICAgPGJyIC8+CiAgICAgICAgICAgICAgICAgICAgPHN1Yj48Yj50c2l3ZWstcGl3aWs8L2I+PC9zdWI+CiAgICAgICAgICAgICAgICA8L2E+CiAgICAgICAgICAgIDwvdGQ+CgkJPC90cj4KCQk8dHI+CiAgICAgICAgICAgIDx0ZCBhbGlnbj0iY2VudGVyIj4KICAgICAgICAgICAgICAgIDxhIGhyZWY9Imh0dHBzOi8vZ2l0aHViLmNvbS9kdW5rbGVzVG9hc3QiPgogICAgICAgICAgICAgICAgICAgIDxpbWcgc3JjPSJodHRwczovL2F2YXRhcnMuZ2l0aHVidXNlcmNvbnRlbnQuY29tL3UvMTcyNzk0ODU/dj00IiB3aWR0aD0iMTAwOyIgYWx0PSJkdW5rbGVzVG9hc3QiLz4KICAgICAgICAgICAgICAgICAgICA8YnIgLz4KICAgICAgICAgICAgICAgICAgICA8c3ViPjxiPmR1bmtsZXNUb2FzdDwvYj48L3N1Yj4KICAgICAgICAgICAgICAgIDwvYT4KICAgICAgICAgICAgPC90ZD4KICAgICAgICAgICAgPHRkIGFsaWduPSJjZW50ZXIiPgogICAgICAgICAgICAgICAgPGEgaHJlZj0iaHR0cHM6Ly9naXRodWIuY29tL3NpZ3B3bmVkIj4KICAgICAgICAgICAgICAgICAgICA8aW1nIHNyYz0iaHR0cHM6Ly9hdmF0YXJzLmdpdGh1YnVzZXJjb250ZW50LmNvbS91LzEyMzYzMDI/dj00IiB3aWR0aD0iMTAwOyIgYWx0PSJzaWdwd25lZCIvPgogICAgICAgICAgICAgICAgICAgIDxiciAvPgogICAgICAgICAgICAgICAgICAgIDxzdWI+PGI+c2lncHduZWQ8L2I+PC9zdWI+CiAgICAgICAgICAgICAgICA8L2E+CiAgICAgICAgICAgIDwvdGQ+CiAgICAgICAgICAgIDx0ZCBhbGlnbj0iY2VudGVyIj4KICAgICAgICAgICAgICAgIDxhIGhyZWY9Imh0dHBzOi8vZ2l0aHViLmNvbS9hcmFzaHNoZXlkYSI+CiAgICAgICAgICAgICAgICAgICAgPGltZyBzcmM9Imh0dHBzOi8vYXZhdGFycy5naXRodWJ1c2VyY29udGVudC5jb20vdS8zODkyMjIwMz92PTQiIHdpZHRoPSIxMDA7IiBhbHQ9ImFyYXNoc2hleWRhIi8+CiAgICAgICAgICAgICAgICAgICAgPGJyIC8+CiAgICAgICAgICAgICAgICAgICAgPHN1Yj48Yj5hcmFzaHNoZXlkYTwvYj48L3N1Yj4KICAgICAgICAgICAgICAgIDwvYT4KICAgICAgICAgICAgPC90ZD4KICAgICAgICAgICAgPHRkIGFsaWduPSJjZW50ZXIiPgogICAgICAgICAgICAgICAgPGEgaHJlZj0iaHR0cHM6Ly9naXRodWIuY29tL2FydGh1cmZpb3JldHRlIj4KICAgICAgICAgICAgICAgICAgICA8aW1nIHNyYz0iaHR0cHM6Ly9hdmF0YXJzLmdpdGh1YnVzZXJjb250ZW50LmNvbS91LzQ3NTM3NzA0P3Y9NCIgd2lkdGg9IjEwMDsiIGFsdD0iYXJ0aHVyZmlvcmV0dGUiLz4KICAgICAgICAgICAgICAgICAgICA8YnIgLz4KICAgICAgICAgICAgICAgICAgICA8c3ViPjxiPmFydGh1cmZpb3JldHRlPC9iPjwvc3ViPgogICAgICAgICAgICAgICAgPC9hPgogICAgICAgICAgICA8L3RkPgogICAgICAgICAgICA8dGQgYWxpZ249ImNlbnRlciI+CiAgICAgICAgICAgICAgICA8YSBocmVmPSJodHRwczovL2dpdGh1Yi5jb20venNpbGJpIj4KICAgICAgICAgICAgICAgICAgICA8aW1nIHNyYz0iaHR0cHM6Ly9hdmF0YXJzLmdpdGh1YnVzZXJjb250ZW50LmNvbS91LzM4ODY2NTg/dj00IiB3aWR0aD0iMTAwOyIgYWx0PSJ6c2lsYmkiLz4KICAgICAgICAgICAgICAgICAgICA8YnIgLz4KICAgICAgICAgICAgICAgICAgICA8c3ViPjxiPnpzaWxiaTwvYj48L3N1Yj4KICAgICAgICAgICAgICAgIDwvYT4KICAgICAgICAgICAgPC90ZD4KICAgICAgICAgICAgPHRkIGFsaWduPSJjZW50ZXIiPgogICAgICAgICAgICAgICAgPGEgaHJlZj0iaHR0cHM6Ly9naXRodWIuY29tL2JkcGlwcmF2YSI+CiAgICAgICAgICAgICAgICAgICAgPGltZyBzcmM9Imh0dHBzOi8vYXZhdGFycy5naXRodWJ1c2VyY29udGVudC5jb20vdS83ODcxMjA5P3Y9NCIgd2lkdGg9IjEwMDsiIGFsdD0iYmRwaXByYXZhIi8+CiAgICAgICAgICAgICAgICAgICAgPGJyIC8+CiAgICAgICAgICAgICAgICAgICAgPHN1Yj48Yj5iZHBpcHJhdmE8L2I+PC9zdWI+CiAgICAgICAgICAgICAgICA8L2E+CiAgICAgICAgICAgIDwvdGQ+CgkJPC90cj4KCQk8dHI+CiAgICAgICAgICAgIDx0ZCBhbGlnbj0iY2VudGVyIj4KICAgICAgICAgICAgICAgIDxhIGhyZWY9Imh0dHBzOi8vZ2l0aHViLmNvbS9icnVub2dyY3NhZGEiPgogICAgICAgICAgICAgICAgICAgIDxpbWcgc3JjPSJodHRwczovL2F2YXRhcnMuZ2l0aHVidXNlcmNvbnRlbnQuY29tL3UvNTQ2NzMyMDU/dj00IiB3aWR0aD0iMTAwOyIgYWx0PSJicnVub2dyY3NhZGEiLz4KICAgICAgICAgICAgICAgICAgICA8YnIgLz4KICAgICAgICAgICAgICAgICAgICA8c3ViPjxiPmJydW5vZ3Jjc2FkYTwvYj48L3N1Yj4KICAgICAgICAgICAgICAgIDwvYT4KICAgICAgICAgICAgPC90ZD4KICAgICAgICAgICAgPHRkIGFsaWduPSJjZW50ZXIiPgogICAgICAgICAgICAgICAgPGEgaHJlZj0iaHR0cHM6Ly9naXRodWIuY29tL2NocmlzbGVhcm4iPgogICAgICAgICAgICAgICAgICAgIDxpbWcgc3JjPSJodHRwczovL2F2YXRhcnMuZ2l0aHVidXNlcmNvbnRlbnQuY29tL3UvNTg3NDg2ND92PTQiIHdpZHRoPSIxMDA7IiBhbHQ9ImNocmlzbGVhcm4iLz4KICAgICAgICAgICAgICAgICAgICA8YnIgLz4KICAgICAgICAgICAgICAgICAgICA8c3ViPjxiPmNocmlzbGVhcm48L2I+PC9zdWI+CiAgICAgICAgICAgICAgICA8L2E+CiAgICAgICAgICAgIDwvdGQ+CiAgICAgICAgICAgIDx0ZCBhbGlnbj0iY2VudGVyIj4KICAgICAgICAgICAgICAgIDxhIGhyZWY9Imh0dHBzOi8vZ2l0aHViLmNvbS9kYW5wIj4KICAgICAgICAgICAgICAgICAgICA8aW1nIHNyYz0iaHR0cHM6Ly9hdmF0YXJzLmdpdGh1YnVzZXJjb250ZW50LmNvbS91LzIxODI/dj00IiB3aWR0aD0iMTAwOyIgYWx0PSJkYW5wIi8+CiAgICAgICAgICAgICAgICAgICAgPGJyIC8+CiAgICAgICAgICAgICAgICAgICAgPHN1Yj48Yj5kYW5wPC9iPjwvc3ViPgogICAgICAgICAgICAgICAgPC9hPgogICAgICAgICAgICA8L3RkPgogICAgICAgICAgICA8dGQgYWxpZ249ImNlbnRlciI+CiAgICAgICAgICAgICAgICA8YSBocmVmPSJodHRwczovL2dpdGh1Yi5jb20vbHVuZGlidW5kaSI+CiAgICAgICAgICAgICAgICAgICAgPGltZyBzcmM9Imh0dHBzOi8vYXZhdGFycy5naXRodWJ1c2VyY29udGVudC5jb20vdS85MTA5NjEyP3Y9NCIgd2lkdGg9IjEwMDsiIGFsdD0ibHVuZGlidW5kaSIvPgogICAgICAgICAgICAgICAgICAgIDxiciAvPgogICAgICAgICAgICAgICAgICAgIDxzdWI+PGI+bHVuZGlidW5kaTwvYj48L3N1Yj4KICAgICAgICAgICAgICAgIDwvYT4KICAgICAgICAgICAgPC90ZD4KICAgICAgICAgICAgPHRkIGFsaWduPSJjZW50ZXIiPgogICAgICAgICAgICAgICAgPGEgaHJlZj0iaHR0cHM6Ly9naXRodWIuY29tL2VtbWFudWVsLWZlcmRtYW4iPgogICAgICAgICAgICAgICAgICAgIDxpbWcgc3JjPSJodHRwczovL2F2YXRhcnMuZ2l0aHVidXNlcmNvbnRlbnQuY29tL3UvMzU0NzA5MjE/dj00IiB3aWR0aD0iMTAwOyIgYWx0PSJlbW1hbnVlbC1mZXJkbWFuIi8+CiAgICAgICAgICAgICAgICAgICAgPGJyIC8+CiAgICAgICAgICAgICAgICAgICAgPHN1Yj48Yj5lbW1hbnVlbC1mZXJkbWFuPC9iPjwvc3ViPgogICAgICAgICAgICAgICAgPC9hPgogICAgICAgICAgICA8L3RkPgogICAgICAgICAgICA8dGQgYWxpZ249ImNlbnRlciI+CiAgICAgICAgICAgICAgICA8YSBocmVmPSJodHRwczovL2dpdGh1Yi5jb20vRmRhd2dzIj4KICAgICAgICAgICAgICAgICAgICA8aW1nIHNyYz0iaHR0cHM6Ly9hdmF0YXJzLmdpdGh1YnVzZXJjb250ZW50LmNvbS91LzQzODE0MTQwP3Y9NCIgd2lkdGg9IjEwMDsiIGFsdD0iRmRhd2dzIi8+CiAgICAgICAgICAgICAgICAgICAgPGJyIC8+CiAgICAgICAgICAgICAgICAgICAgPHN1Yj48Yj5GZGF3Z3M8L2I+PC9zdWI+CiAgICAgICAgICAgICAgICA8L2E+CiAgICAgICAgICAgIDwvdGQ+CgkJPC90cj4KCQk8dHI+CiAgICAgICAgICAgIDx0ZCBhbGlnbj0iY2VudGVyIj4KICAgICAgICAgICAgICAgIDxhIGhyZWY9Imh0dHBzOi8vZ2l0aHViLmNvbS9HcmV5WG9yIj4KICAgICAgICAgICAgICAgICAgICA8aW1nIHNyYz0iaHR0cHM6Ly9hdmF0YXJzLmdpdGh1YnVzZXJjb250ZW50LmNvbS91Lzc5NjAyMjczP3Y9NCIgd2lkdGg9IjEwMDsiIGFsdD0iR3JleVhvciIvPgogICAgICAgICAgICAgICAgICAgIDxiciAvPgogICAgICAgICAgICAgICAgICAgIDxzdWI+PGI+R3JleVhvcjwvYj48L3N1Yj4KICAgICAgICAgICAgICAgIDwvYT4KICAgICAgICAgICAgPC90ZD4KICAgICAgICAgICAgPHRkIGFsaWduPSJjZW50ZXIiPgogICAgICAgICAgICAgICAgPGEgaHJlZj0iaHR0cHM6Ly9naXRodWIuY29tL0hlbGdlU3ZlcnJlIj4KICAgICAgICAgICAgICAgICAgICA8aW1nIHNyYz0iaHR0cHM6Ly9hdmF0YXJzLmdpdGh1YnVzZXJjb250ZW50LmNvbS91LzEwODk2NTI/dj00IiB3aWR0aD0iMTAwOyIgYWx0PSJIZWxnZVN2ZXJyZSIvPgogICAgICAgICAgICAgICAgICAgIDxiciAvPgogICAgICAgICAgICAgICAgICAgIDxzdWI+PGI+SGVsZ2VTdmVycmU8L2I+PC9zdWI+CiAgICAgICAgICAgICAgICA8L2E+CiAgICAgICAgICAgIDwvdGQ+CiAgICAgICAgICAgIDx0ZCBhbGlnbj0iY2VudGVyIj4KICAgICAgICAgICAgICAgIDxhIGhyZWY9Imh0dHBzOi8vZ2l0aHViLmNvbS9DSkh3b25nIj4KICAgICAgICAgICAgICAgICAgICA8aW1nIHNyYz0iaHR0cHM6Ly9hdmF0YXJzLmdpdGh1YnVzZXJjb250ZW50LmNvbS91LzkwNjA1Nz92PTQiIHdpZHRoPSIxMDA7IiBhbHQ9IkNKSHdvbmciLz4KICAgICAgICAgICAgICAgICAgICA8YnIgLz4KICAgICAgICAgICAgICAgICAgICA8c3ViPjxiPkNKSHdvbmc8L2I+PC9zdWI+CiAgICAgICAgICAgICAgICA8L2E+CiAgICAgICAgICAgIDwvdGQ+CiAgICAgICAgICAgIDx0ZCBhbGlnbj0iY2VudGVyIj4KICAgICAgICAgICAgICAgIDxhIGhyZWY9Imh0dHBzOi8vZ2l0aHViLmNvbS9JY2V5V3UiPgogICAgICAgICAgICAgICAgICAgIDxpbWcgc3JjPSJodHRwczovL2F2YXRhcnMuZ2l0aHVidXNlcmNvbnRlbnQuY29tL3UvNjYwOTYyNTQ/dj00IiB3aWR0aD0iMTAwOyIgYWx0PSJJY2V5V3UiLz4KICAgICAgICAgICAgICAgICAgICA8YnIgLz4KICAgICAgICAgICAgICAgICAgICA8c3ViPjxiPkljZXlXdTwvYj48L3N1Yj4KICAgICAgICAgICAgICAgIDwvYT4KICAgICAgICAgICAgPC90ZD4KICAgICAgICAgICAgPHRkIGFsaWduPSJjZW50ZXIiPgogICAgICAgICAgICAgICAgPGEgaHJlZj0iaHR0cHM6Ly9naXRodWIuY29tL0phY29iQ29mZmVlIj4KICAgICAgICAgICAgICAgICAgICA8aW1nIHNyYz0iaHR0cHM6Ly9hdmF0YXJzLmdpdGh1YnVzZXJjb250ZW50LmNvbS91LzQ1ODg0MjY0P3Y9NCIgd2lkdGg9IjEwMDsiIGFsdD0iSmFjb2JDb2ZmZWUiLz4KICAgICAgICAgICAgICAgICAgICA8YnIgLz4KICAgICAgICAgICAgICAgICAgICA8c3ViPjxiPkphY29iQ29mZmVlPC9iPjwvc3ViPgogICAgICAgICAgICAgICAgPC9hPgogICAgICAgICAgICA8L3RkPgogICAgICAgICAgICA8dGQgYWxpZ249ImNlbnRlciI+CiAgICAgICAgICAgICAgICA8YSBocmVmPSJodHRwczovL2dpdGh1Yi5jb20vVGhlVmFhbiI+CiAgICAgICAgICAgICAgICAgICAgPGltZyBzcmM9Imh0dHBzOi8vYXZhdGFycy5naXRodWJ1c2VyY29udGVudC5jb20vdS8xMTA4NDg1P3Y9NCIgd2lkdGg9IjEwMDsiIGFsdD0iVGhlVmFhbiIvPgogICAgICAgICAgICAgICAgICAgIDxiciAvPgogICAgICAgICAgICAgICAgICAgIDxzdWI+PGI+VGhlVmFhbjwvYj48L3N1Yj4KICAgICAgICAgICAgICAgIDwvYT4KICAgICAgICAgICAgPC90ZD4KCQk8L3RyPgoJCTx0cj4KICAgICAgICAgICAgPHRkIGFsaWduPSJjZW50ZXIiPgogICAgICAgICAgICAgICAgPGEgaHJlZj0iaHR0cHM6Ly9naXRodWIuY29tL2pvbmF0YXciPgogICAgICAgICAgICAgICAgICAgIDxpbWcgc3JjPSJodHRwczovL2F2YXRhcnMuZ2l0aHVidXNlcmNvbnRlbnQuY29tL3UvMjk3NzI3NjM/dj00IiB3aWR0aD0iMTAwOyIgYWx0PSJqb25hdGF3Ii8+CiAgICAgICAgICAgICAgICAgICAgPGJyIC8+CiAgICAgICAgICAgICAgICAgICAgPHN1Yj48Yj5qb25hdGF3PC9iPjwvc3ViPgogICAgICAgICAgICAgICAgPC9hPgogICAgICAgICAgICA8L3RkPgogICAgICAgICAgICA8dGQgYWxpZ249ImNlbnRlciI+CiAgICAgICAgICAgICAgICA8YSBocmVmPSJodHRwczovL2dpdGh1Yi5jb20vSUhJdXRjaCI+CiAgICAgICAgICAgICAgICAgICAgPGltZyBzcmM9Imh0dHBzOi8vYXZhdGFycy5naXRodWJ1c2VyY29udGVudC5jb20vdS8yMDgyNTA0Nz92PTQiIHdpZHRoPSIxMDA7IiBhbHQ9IklISXV0Y2giLz4KICAgICAgICAgICAgICAgICAgICA8YnIgLz4KICAgICAgICAgICAgICAgICAgICA8c3ViPjxiPklISXV0Y2g8L2I+PC9zdWI+CiAgICAgICAgICAgICAgICA8L2E+CiAgICAgICAgICAgIDwvdGQ+CiAgICAgICAgICAgIDx0ZCBhbGlnbj0iY2VudGVyIj4KICAgICAgICAgICAgICAgIDxhIGhyZWY9Imh0dHBzOi8vZ2l0aHViLmNvbS9LaUFSQyI+CiAgICAgICAgICAgICAgICAgICAgPGltZyBzcmM9Imh0dHBzOi8vYXZhdGFycy5naXRodWJ1c2VyY29udGVudC5jb20vdS83Mzg0NzQ4ND92PTQiIHdpZHRoPSIxMDA7IiBhbHQ9IktpQVJDIi8+CiAgICAgICAgICAgICAgICAgICAgPGJyIC8+CiAgICAgICAgICAgICAgICAgICAgPHN1Yj48Yj5LaUFSQzwvYj48L3N1Yj4KICAgICAgICAgICAgICAgIDwvYT4KICAgICAgICAgICAgPC90ZD4KICAgICAgICAgICAgPHRkIGFsaWduPSJjZW50ZXIiPgogICAgICAgICAgICAgICAgPGEgaHJlZj0iaHR0cHM6Ly9naXRodWIuY29tL2t5bGxpYW4iPgogICAgICAgICAgICAgICAgICAgIDxpbWcgc3JjPSJodHRwczovL2F2YXRhcnMuZ2l0aHVidXNlcmNvbnRlbnQuY29tL3UvNTgzMTIzMz92PTQiIHdpZHRoPSIxMDA7IiBhbHQ9Imt5bGxpYW4iLz4KICAgICAgICAgICAgICAgICAgICA8YnIgLz4KICAgICAgICAgICAgICAgICAgICA8c3ViPjxiPmt5bGxpYW48L2I+PC9zdWI+CiAgICAgICAgICAgICAgICA8L2E+CiAgICAgICAgICAgIDwvdGQ+CiAgICAgICAgICAgIDx0ZCBhbGlnbj0iY2VudGVyIj4KICAgICAgICAgICAgICAgIDxhIGhyZWY9Imh0dHBzOi8vZ2l0aHViLmNvbS9TaGFkaWVzdEdvYXQiPgogICAgICAgICAgICAgICAgICAgIDxpbWcgc3JjPSJodHRwczovL2F2YXRhcnMuZ2l0aHVidXNlcmNvbnRlbnQuY29tL3UvNDg1OTA0OTI/dj00IiB3aWR0aD0iMTAwOyIgYWx0PSJTaGFkaWVzdEdvYXQiLz4KICAgICAgICAgICAgICAgICAgICA8YnIgLz4KICAgICAgICAgICAgICAgICAgICA8c3ViPjxiPlNoYWRpZXN0R29hdDwvYj48L3N1Yj4KICAgICAgICAgICAgICAgIDwvYT4KICAgICAgICAgICAgPC90ZD4KICAgICAgICAgICAgPHRkIGFsaWduPSJjZW50ZXIiPgogICAgICAgICAgICAgICAgPGEgaHJlZj0iaHR0cHM6Ly9naXRodWIuY29tL01hcmlvR0siPgogICAgICAgICAgICAgICAgICAgIDxpbWcgc3JjPSJodHRwczovL2F2YXRhcnMuZ2l0aHVidXNlcmNvbnRlbnQuY29tL3UvODM3OTA3OT92PTQiIHdpZHRoPSIxMDA7IiBhbHQ9Ik1hcmlvR0siLz4KICAgICAgICAgICAgICAgICAgICA8YnIgLz4KICAgICAgICAgICAgICAgICAgICA8c3ViPjxiPk1hcmlvR0s8L2I+PC9zdWI+CiAgICAgICAgICAgICAgICA8L2E+CiAgICAgICAgICAgIDwvdGQ+CgkJPC90cj4KCTx0Ym9keT4KPC90YWJsZT4KPCEtLSByZWFkbWU6IGNvbGxhYm9yYXRvcnMsY29udHJpYnV0b3JzIC1lbmQgLS0+Cg==
- readmeEtag: '"92efc44409eedc1175e93dd6f163360181d4c163"'
- readmeLastModified: Sun, 18 Aug 2024 16:13:10 GMT
+ IyBTY2FsYXIgQVBJIFJlZmVyZW5jZQoKWyFbQ0ldKGh0dHBzOi8vZ2l0aHViLmNvbS9zY2FsYXIvc2NhbGFyL2FjdGlvbnMvd29ya2Zsb3dzL2NpLnltbC9iYWRnZS5zdmcpXShodHRwczovL2dpdGh1Yi5jb20vc2NhbGFyL3NjYWxhci9hY3Rpb25zL3dvcmtmbG93cy9jaS55bWwpClshW0NvbnRyaWJ1dG9yc10oaHR0cHM6Ly9pbWcuc2hpZWxkcy5pby9naXRodWIvY29udHJpYnV0b3JzL3NjYWxhci9zY2FsYXIpXShodHRwczovL2dpdGh1Yi5jb20vc2NhbGFyL3NjYWxhci9ncmFwaHMvY29udHJpYnV0b3JzKQpbIVtHaXRIdWIgTGljZW5zZV0oaHR0cHM6Ly9pbWcuc2hpZWxkcy5pby9naXRodWIvbGljZW5zZS9zY2FsYXIvc2NhbGFyKV0oaHR0cHM6Ly9naXRodWIuY29tL3NjYWxhci9zY2FsYXIvYmxvYi9tYWluL0xJQ0VOU0UpClshW0Rpc2NvcmRdKGh0dHBzOi8vaW1nLnNoaWVsZHMuaW8vZGlzY29yZC8xMTM1MzMwMjA3OTYwNjc4NDEwP3N0eWxlPWZsYXQmY29sb3I9NTg2NUYyKV0oaHR0cHM6Ly9kaXNjb3JkLmdnL3NjYWxhcikKCkdlbmVyYXRlIGludGVyYWN0aXZlIEFQSSBkb2N1bWVudGF0aW9uIGZyb20gT3BlbkFQSS9Td2FnZ2VyIGRvY3VtZW50cy4gW1RyeSBvdXIgRGVtb10oaHR0cHM6Ly9kb2NzLnNjYWxhci5jb20vc3dhZ2dlci1lZGl0b3IpCgo8aW1nIHdpZHRoPSI4MzAiIGhlaWdodD0iNDU1IiBzcmM9Imh0dHBzOi8vZ2l0aHViLmNvbS9zY2FsYXIvc2NhbGFyL2Fzc2V0cy82MjAxNDA3LzA0NmFhZWNhLWYwZmUtNDUzZC1hNjYxLWM3NDczOTljNTZlZiI+CgojIyBGZWF0dXJlcwoKLSBVc2VzIE9wZW5BUEkvU3dhZ2dlciBkb2N1bWVudHMKLSBSZXF1ZXN0IGV4YW1wbGVzIGZvciBtYW55IGZhdm9yaXRlIGxhbmd1YWdlcyBhbmQgZnJhbWV3b3JrcwotIENvbWVzIHdpdGggYW4gaW50ZWdyYXRlZCBBUEkgY2xpZW50Ci0gSW50ZWdyYXRlcyB3aXRoIHlvdXIgZmF2b3JpdGUgZnJhbWV3b3JrCi0gRG9lc27igJl0IGxvb2sgbGlrZSBpdOKAmXMgMjAxMQoKIyMgUXVpY2tzdGFydAoKWW914oCZcmUganVzdCBvbmUgSFRNTCBmaWxlIGF3YXkgZnJvbSBoYXZpbmcgYW4gYXdlc29tZSBBUEkgcmVmZXJlbmNlOgoKYGBgaHRtbAo8IWRvY3R5cGUgaHRtbD4KPGh0bWw+CiAgPGhlYWQ+CiAgICA8dGl0bGU+U2NhbGFyIEFQSSBSZWZlcmVuY2U8L3RpdGxlPgogICAgPG1ldGEgY2hhcnNldD0idXRmLTgiIC8+CiAgICA8bWV0YQogICAgICBuYW1lPSJ2aWV3cG9ydCIKICAgICAgY29udGVudD0id2lkdGg9ZGV2aWNlLXdpZHRoLCBpbml0aWFsLXNjYWxlPTEiIC8+CiAgPC9oZWFkPgogIDxib2R5PgogICAgPCEtLSBOZWVkIGEgQ3VzdG9tIEhlYWRlcj8gQ2hlY2sgb3V0IHRoaXMgZXhhbXBsZSBodHRwczovL2NvZGVwZW4uaW8vc2NhbGFyb3JnL3Blbi9Wd09YcWFtIC0tPgogICAgPHNjcmlwdAogICAgICBpZD0iYXBpLXJlZmVyZW5jZSIKICAgICAgZGF0YS11cmw9Imh0dHBzOi8vY2RuLmpzZGVsaXZyLm5ldC9ucG0vQHNjYWxhci9nYWxheHkvZGlzdC9sYXRlc3QueWFtbCI+PC9zY3JpcHQ+CiAgICA8c2NyaXB0IHNyYz0iaHR0cHM6Ly9jZG4uanNkZWxpdnIubmV0L25wbS9Ac2NhbGFyL2FwaS1yZWZlcmVuY2UiPjwvc2NyaXB0PgogIDwvYm9keT4KPC9odG1sPgpgYGAKCkFuZCB0aGVyZeKAmXMgYW4gZXZlci1ncm93aW5nIGxpc3Qgb2YgcGx1Z2lucyBhbmQgaW50ZWdyYXRpb25zOgoKIyMgSW50ZWdyYXRpb25zCgotIFtIVE1MXShkb2N1bWVudGF0aW9uL2ludGVncmF0aW9ucy9odG1sLm1kKQotIFsuTkVUXShwYWNrYWdlcy9zY2FsYXIuYXNwbmV0Y29yZS9SRUFETUUubWQpCi0gW0Fkb25pc0pTXShkb2N1bWVudGF0aW9uL2ludGVncmF0aW9ucy9hZG9uaXNqcy5tZCkKLSBbRG9jdXNhdXJ1c10ocGFja2FnZXMvZG9jdXNhdXJ1cy9SRUFETUUubWQpCi0gW0VseXNpYUpTXShkb2N1bWVudGF0aW9uL2ludGVncmF0aW9ucy9lbHlzaWFqcy5tZCkKLSBbRXhwcmVzc10ocGFja2FnZXMvZXhwcmVzcy1hcGktcmVmZXJlbmNlL1JFQURNRS5tZCkKLSBbRmFzdEFQSV0ocGFja2FnZXMvc2NhbGFyX2Zhc3RhcGkvUkVBRE1FLm1kKQotIFtGYXN0aWZ5XShwYWNrYWdlcy9mYXN0aWZ5LWFwaS1yZWZlcmVuY2UvUkVBRE1FLm1kKQotIFtHb10oZG9jdW1lbnRhdGlvbi9pbnRlZ3JhdGlvbnMvZ28ubWQpCi0gW0hvbm9dKHBhY2thZ2VzL2hvbm8tYXBpLXJlZmVyZW5jZS9SRUFETUUubWQpCi0gW0xhcmF2ZWxdKGRvY3VtZW50YXRpb24vaW50ZWdyYXRpb25zL2xhcmF2ZWwubWQpCi0gW0xpdGVzdGFyXShodHRwczovL2RvY3MubGl0ZXN0YXIuZGV2L2xhdGVzdC91c2FnZS9vcGVuYXBpL3VpX3BsdWdpbnMuaHRtbCkKLSBbTmVzdEpTXShwYWNrYWdlcy9uZXN0anMtYXBpLXJlZmVyZW5jZS9SRUFETUUubWQpCi0gW05leHQuanNdKHBhY2thZ2VzL25leHRqcy1hcGktcmVmZXJlbmNlL1JFQURNRS5tZCkKLSBbTml0cm9dKGRvY3VtZW50YXRpb24vaW50ZWdyYXRpb25zL25pdHJvLm1kKQotIFtOdXh0XShwYWNrYWdlcy9udXh0L1JFQURNRS5tZCkKLSBbUGxhdGZvcm1hdGljXShkb2N1bWVudGF0aW9uL2ludGVncmF0aW9ucy9wbGF0Zm9ybWF0aWMubWQpCi0gW1JlYWN0XShwYWNrYWdlcy9hcGktcmVmZXJlbmNlLXJlYWN0L1JFQURNRS5tZCkKLSBbUnVzdF0oZG9jdW1lbnRhdGlvbi9pbnRlZ3JhdGlvbnMvcnVzdC5tZCkKLSBbVnVlLmpzXShwYWNrYWdlcy9hcGktcmVmZXJlbmNlL1JFQURNRS5tZCkKCiMjIE1hbmFnZWQgSG9zdGluZwoKV2XigJlyZSBvZmZlcmluZyBhIGZyZWUgYW5kIHBhaWQgbWFuYWdlZCBob3N0aW5nIG9uIHRoZSBlZGdlLCB0b286CgotIFdyaXRlIHlvdXIgQVBJIGRvY3VtZW50YXRpb24gYW5kIHB1Ymxpc2ggeW91ciBBUEkgcmVmZXJlbmNlcyAoZnJlZSkKLSBHZXQgU1NMIGFuZCBhIHN1cGVyIGNvb2wgYCouYXBpZG9jdW1lbnRhdGlvbi5jb21gIHN1YmRvbWFpbiAoZnJlZSkKLSBXcml0ZSBmcmVlIHRleHQgZG9jdW1lbnRhdGlvbiAocGFpZCkKLSBDb2xsYWJvcmF0ZSB3aXRoIHlvdXIgd2hvbGUgdGVhbSAocGFpZCkKLSBVc2UgYW55IGRvbWFpbiAocGFpZCkKClJlYWR5PyBbQ3JlYXRlIHlvdXIgYWNjb3VudCBvbiBzY2FsYXIuY29tXShodHRwczovL3NjYWxhci5jb20pLgoKIyMgUHJvamVjdHMKCnwgUHJvamVjdCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgRGVzY3JpcHRpb24gICAgICAgICAgICB8CnwgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tIHwgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSB8CnwgW1NjYWxhciBBUEkgQ2xpZW50XShwYWNrYWdlcy9hcGktY2xpZW50L1JFQURNRS5tZCkgICAgICAgICAgICAgICAgIHwgQVBJIGNsaWVudCAgICAgICAgICAgICB8CnwgW1NjYWxhciBDTEldKHBhY2thZ2VzL2NsaS9SRUFETUUubWQpICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgQ29tbWFuZC1saW5lIGludGVyZmFjZSB8CnwgW1NjYWxhciBHYWxheHldKHBhY2thZ2VzL2dhbGF4eS9SRUFETUUubWQpICAgICAgICAgICAgICAgICAgICAgICAgIHwgT3BlbkFQSSBFeGFtcGxlICAgICAgICB8CnwgW1NjYWxhciBQbGF5IEJ1dHRvbl0ocGFja2FnZXMvcGxheS1idXR0b24vUkVBRE1FLm1kKSAgICAgICAgICAgICAgIHwgUXVpY2sgQVBJIENsaWVudCBFbWJlZCB8CnwgW1NjYWxhciBNb2NrIFNlcnZlcl0ocGFja2FnZXMvbW9jay1zZXJ2ZXIvUkVBRE1FLm1kKSAgICAgICAgICAgICAgIHwgT3BlbkFQSSBNb2NrIFNlcnZlciAgICB8CnwgW1NjYWxhciBWb2lkIFNlcnZlcl0ocGFja2FnZXMvdm9pZC1zZXJ2ZXIvUkVBRE1FLm1kKSAgICAgICAgICAgICAgIHwgSFRUUCBSZXF1ZXN0IE1pcnJvciAgICB8CnwgW1NjYWxhciBPcGVuIEFQSSBQYXJzZXJdKGh0dHBzOi8vZ2l0aHViLmNvbS9zY2FsYXIvb3BlbmFwaS1wYXJzZXIpIHwgT3BlbkFQSSBTREsgICAgICAgICAgICB8CnwgW1NjYWxhciBTYW5kYm94XShodHRwczovL3NhbmRib3guc2NhbGFyLmNvbS8pICAgICAgICAgICAgICAgICAgICAgIHwgT25saW5lIE9wZW5BUEkgRWRpdG9yICB8CgojIyBEb2N1bWVudGF0aW9uCgp8IFRvcGljICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgRGVzY3JpcHRpb24gICAgICAgICAgICAgICAgICAgICAgICB8CnwgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gfCAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tIHwKfCBbVGhlbWVzXShkb2N1bWVudGF0aW9uL3RoZW1lcy5tZCkgICAgICAgICAgICAgICB8IFRoZW1lcywgbGF5b3V0cyAmIHN0eWxpbmcgICAgICAgICAgfAp8IFtDb25maWd1cmF0aW9uXShkb2N1bWVudGF0aW9uL2NvbmZpZ3VyYXRpb24ubWQpIHwgVGhlIHVuaXZlcnNhbCBjb25maWd1cmF0aW9uIG9iamVjdCB8CnwgW09wZW5BUEldKGRvY3VtZW50YXRpb24vb3BlbmFwaS5tZCkgICAgICAgICAgICAgfCBPcGVuQVBJIGFuZCBvdXIgZXh0ZW5zaW9ucyB0byBpdCAgIHwKfCBbTWFya2Rvd25dKGRvY3VtZW50YXRpb24vbWFya2Rvd24ubWQpICAgICAgICAgICB8IE1hcmtkb3duIHN5bnRheCAgICAgICAgICAgICAgICAgICAgfAoKIyMgQ29tbXVuaXR5CgpXZSBhcmUgQVBJIG5lcmRzLiBZb3UgdG9vPyBMZXTigJlzIGNoYXQgb24gRGlzY29yZDogPGh0dHBzOi8vZGlzY29yZC5nZy9zY2FsYXI+Cgo+IFshTk9URV1cCj4gW1NjYWxhciBUb3duaGFsbCBldmVyeSAybmQgVGh1cnNkYXkgaW4gRGlzY29yZF0oaHR0cHM6Ly9kaXNjb3JkLmdnL3NjYWxhcj9ldmVudD0xMjE5MzYzMzg1NDg1ODI0MDAwKQo+Cj4gSm9pbiB1cyB0byBzZWUgdXBjb21pbmcgZmVhdHVyZXMsIGRpc2N1c3MgdGhlIHJvYWRtYXAgYW5kIGNoYXQgYWJvdXQgQVBJcy4g8J+SrAoKIyMgQ29udHJpYnV0b3JzCgpDb250cmlidXRpb25zIGFyZSB3ZWxjb21lISBSZWFkIHRoZSBbYENPTlRSSUJVVElOR2BdKGh0dHBzOi8vZ2l0aHViLmNvbS9zY2FsYXIvc2NhbGFyL2Jsb2IvbWFpbi9DT05UUklCVVRJTkcpIGd1aWRlLgoKPCEtLSByZWFkbWU6IGNvbGxhYm9yYXRvcnMsY29udHJpYnV0b3JzIC1zdGFydCAtLT4KPHRhYmxlPgoJPHRib2R5PgoJCTx0cj4KICAgICAgICAgICAgPHRkIGFsaWduPSJjZW50ZXIiPgogICAgICAgICAgICAgICAgPGEgaHJlZj0iaHR0cHM6Ly9naXRodWIuY29tL2hhbnNwYWdlbCI+CiAgICAgICAgICAgICAgICAgICAgPGltZyBzcmM9Imh0dHBzOi8vYXZhdGFycy5naXRodWJ1c2VyY29udGVudC5jb20vdS8xNTc3OTkyP3Y9NCIgd2lkdGg9IjEwMDsiIGFsdD0iaGFuc3BhZ2VsIi8+CiAgICAgICAgICAgICAgICAgICAgPGJyIC8+CiAgICAgICAgICAgICAgICAgICAgPHN1Yj48Yj5oYW5zcGFnZWw8L2I+PC9zdWI+CiAgICAgICAgICAgICAgICA8L2E+CiAgICAgICAgICAgIDwvdGQ+CiAgICAgICAgICAgIDx0ZCBhbGlnbj0iY2VudGVyIj4KICAgICAgICAgICAgICAgIDxhIGhyZWY9Imh0dHBzOi8vZ2l0aHViLmNvbS9hbXJpdGsiPgogICAgICAgICAgICAgICAgICAgIDxpbWcgc3JjPSJodHRwczovL2F2YXRhcnMuZ2l0aHVidXNlcmNvbnRlbnQuY29tL3UvMjAzOTUzOT92PTQiIHdpZHRoPSIxMDA7IiBhbHQ9ImFtcml0ayIvPgogICAgICAgICAgICAgICAgICAgIDxiciAvPgogICAgICAgICAgICAgICAgICAgIDxzdWI+PGI+YW1yaXRrPC9iPjwvc3ViPgogICAgICAgICAgICAgICAgPC9hPgogICAgICAgICAgICA8L3RkPgogICAgICAgICAgICA8dGQgYWxpZ249ImNlbnRlciI+CiAgICAgICAgICAgICAgICA8YSBocmVmPSJodHRwczovL2dpdGh1Yi5jb20vdG1hc3Ryb20iPgogICAgICAgICAgICAgICAgICAgIDxpbWcgc3JjPSJodHRwczovL2F2YXRhcnMuZ2l0aHVidXNlcmNvbnRlbnQuY29tL3UvMzY1MjUzMjk/dj00IiB3aWR0aD0iMTAwOyIgYWx0PSJ0bWFzdHJvbSIvPgogICAgICAgICAgICAgICAgICAgIDxiciAvPgogICAgICAgICAgICAgICAgICAgIDxzdWI+PGI+dG1hc3Ryb208L2I+PC9zdWI+CiAgICAgICAgICAgICAgICA8L2E+CiAgICAgICAgICAgIDwvdGQ+CiAgICAgICAgICAgIDx0ZCBhbGlnbj0iY2VudGVyIj4KICAgICAgICAgICAgICAgIDxhIGhyZWY9Imh0dHBzOi8vZ2l0aHViLmNvbS9tYXJjbGF2ZSI+CiAgICAgICAgICAgICAgICAgICAgPGltZyBzcmM9Imh0dHBzOi8vYXZhdGFycy5naXRodWJ1c2VyY29udGVudC5jb20vdS82MTc2MzE0P3Y9NCIgd2lkdGg9IjEwMDsiIGFsdD0ibWFyY2xhdmUiLz4KICAgICAgICAgICAgICAgICAgICA8YnIgLz4KICAgICAgICAgICAgICAgICAgICA8c3ViPjxiPm1hcmNsYXZlPC9iPjwvc3ViPgogICAgICAgICAgICAgICAgPC9hPgogICAgICAgICAgICA8L3RkPgogICAgICAgICAgICA8dGQgYWxpZ249ImNlbnRlciI+CiAgICAgICAgICAgICAgICA8YSBocmVmPSJodHRwczovL2dpdGh1Yi5jb20vaHdrciI+CiAgICAgICAgICAgICAgICAgICAgPGltZyBzcmM9Imh0dHBzOi8vYXZhdGFycy5naXRodWJ1c2VyY29udGVudC5jb20vdS82Mzc0MDkwP3Y9NCIgd2lkdGg9IjEwMDsiIGFsdD0iaHdrciIvPgogICAgICAgICAgICAgICAgICAgIDxiciAvPgogICAgICAgICAgICAgICAgICAgIDxzdWI+PGI+aHdrcjwvYj48L3N1Yj4KICAgICAgICAgICAgICAgIDwvYT4KICAgICAgICAgICAgPC90ZD4KICAgICAgICAgICAgPHRkIGFsaWduPSJjZW50ZXIiPgogICAgICAgICAgICAgICAgPGEgaHJlZj0iaHR0cHM6Ly9naXRodWIuY29tL2FudGxpbyI+CiAgICAgICAgICAgICAgICAgICAgPGltZyBzcmM9Imh0dHBzOi8vYXZhdGFycy5naXRodWJ1c2VyY29udGVudC5jb20vdS8xNDk2NjE1NT92PTQiIHdpZHRoPSIxMDA7IiBhbHQ9ImFudGxpbyIvPgogICAgICAgICAgICAgICAgICAgIDxiciAvPgogICAgICAgICAgICAgICAgICAgIDxzdWI+PGI+YW50bGlvPC9iPjwvc3ViPgogICAgICAgICAgICAgICAgPC9hPgogICAgICAgICAgICA8L3RkPgoJCTwvdHI+CgkJPHRyPgogICAgICAgICAgICA8dGQgYWxpZ249ImNlbnRlciI+CiAgICAgICAgICAgICAgICA8YSBocmVmPSJodHRwczovL2dpdGh1Yi5jb20vY2FtZXJvbnJvaGFuaSI+CiAgICAgICAgICAgICAgICAgICAgPGltZyBzcmM9Imh0dHBzOi8vYXZhdGFycy5naXRodWJ1c2VyY29udGVudC5jb20vdS82MjAxNDA3P3Y9NCIgd2lkdGg9IjEwMDsiIGFsdD0iY2FtZXJvbnJvaGFuaSIvPgogICAgICAgICAgICAgICAgICAgIDxiciAvPgogICAgICAgICAgICAgICAgICAgIDxzdWI+PGI+Y2FtZXJvbnJvaGFuaTwvYj48L3N1Yj4KICAgICAgICAgICAgICAgIDwvYT4KICAgICAgICAgICAgPC90ZD4KICAgICAgICAgICAgPHRkIGFsaWduPSJjZW50ZXIiPgogICAgICAgICAgICAgICAgPGEgaHJlZj0iaHR0cHM6Ly9naXRodWIuY29tL2dlb2ZmZ3Njb3R0Ij4KICAgICAgICAgICAgICAgICAgICA8aW1nIHNyYz0iaHR0cHM6Ly9hdmF0YXJzLmdpdGh1YnVzZXJjb250ZW50LmNvbS91LzU5MjA2MTAwP3Y9NCIgd2lkdGg9IjEwMDsiIGFsdD0iZ2VvZmZnc2NvdHQiLz4KICAgICAgICAgICAgICAgICAgICA8YnIgLz4KICAgICAgICAgICAgICAgICAgICA8c3ViPjxiPmdlb2ZmZ3Njb3R0PC9iPjwvc3ViPgogICAgICAgICAgICAgICAgPC9hPgogICAgICAgICAgICA8L3RkPgogICAgICAgICAgICA8dGQgYWxpZ249ImNlbnRlciI+CiAgICAgICAgICAgICAgICA8YSBocmVmPSJodHRwczovL2dpdGh1Yi5jb20vaW55b3VydGltZSI+CiAgICAgICAgICAgICAgICAgICAgPGltZyBzcmM9Imh0dHBzOi8vYXZhdGFycy5naXRodWJ1c2VyY29udGVudC5jb20vdS82NjExMTAzMD92PTQiIHdpZHRoPSIxMDA7IiBhbHQ9ImlueW91cnRpbWUiLz4KICAgICAgICAgICAgICAgICAgICA8YnIgLz4KICAgICAgICAgICAgICAgICAgICA8c3ViPjxiPmlueW91cnRpbWU8L2I+PC9zdWI+CiAgICAgICAgICAgICAgICA8L2E+CiAgICAgICAgICAgIDwvdGQ+CiAgICAgICAgICAgIDx0ZCBhbGlnbj0iY2VudGVyIj4KICAgICAgICAgICAgICAgIDxhIGhyZWY9Imh0dHBzOi8vZ2l0aHViLmNvbS9BbW9yaW0zMyI+CiAgICAgICAgICAgICAgICAgICAgPGltZyBzcmM9Imh0dHBzOi8vYXZhdGFycy5naXRodWJ1c2VyY29udGVudC5jb20vdS80MjYyNDg2OT92PTQiIHdpZHRoPSIxMDA7IiBhbHQ9IkFtb3JpbTMzIi8+CiAgICAgICAgICAgICAgICAgICAgPGJyIC8+CiAgICAgICAgICAgICAgICAgICAgPHN1Yj48Yj5BbW9yaW0zMzwvYj48L3N1Yj4KICAgICAgICAgICAgICAgIDwvYT4KICAgICAgICAgICAgPC90ZD4KICAgICAgICAgICAgPHRkIGFsaWduPSJjZW50ZXIiPgogICAgICAgICAgICAgICAgPGEgaHJlZj0iaHR0cHM6Ly9naXRodWIuY29tL2FkanNreSI+CiAgICAgICAgICAgICAgICAgICAgPGltZyBzcmM9Imh0dHBzOi8vYXZhdGFycy5naXRodWJ1c2VyY29udGVudC5jb20vdS80OTMwNTIxOT92PTQiIHdpZHRoPSIxMDA7IiBhbHQ9ImFkanNreSIvPgogICAgICAgICAgICAgICAgICAgIDxiciAvPgogICAgICAgICAgICAgICAgICAgIDxzdWI+PGI+YWRqc2t5PC9iPjwvc3ViPgogICAgICAgICAgICAgICAgPC9hPgogICAgICAgICAgICA8L3RkPgogICAgICAgICAgICA8dGQgYWxpZ249ImNlbnRlciI+CiAgICAgICAgICAgICAgICA8YSBocmVmPSJodHRwczovL2dpdGh1Yi5jb20vQVRSRUFZIj4KICAgICAgICAgICAgICAgICAgICA8aW1nIHNyYz0iaHR0cHM6Ly9hdmF0YXJzLmdpdGh1YnVzZXJjb250ZW50LmNvbS91LzY2NTg1Mjk1P3Y9NCIgd2lkdGg9IjEwMDsiIGFsdD0iQVRSRUFZIi8+CiAgICAgICAgICAgICAgICAgICAgPGJyIC8+CiAgICAgICAgICAgICAgICAgICAgPHN1Yj48Yj5BVFJFQVk8L2I+PC9zdWI+CiAgICAgICAgICAgICAgICA8L2E+CiAgICAgICAgICAgIDwvdGQ+CgkJPC90cj4KCQk8dHI+CiAgICAgICAgICAgIDx0ZCBhbGlnbj0iY2VudGVyIj4KICAgICAgICAgICAgICAgIDxhIGhyZWY9Imh0dHBzOi8vZ2l0aHViLmNvbS9Nb2hpYjgzNCI+CiAgICAgICAgICAgICAgICAgICAgPGltZyBzcmM9Imh0dHBzOi8vYXZhdGFycy5naXRodWJ1c2VyY29udGVudC5jb20vdS80NzMxNjQ2ND92PTQiIHdpZHRoPSIxMDA7IiBhbHQ9Ik1vaGliODM0Ii8+CiAgICAgICAgICAgICAgICAgICAgPGJyIC8+CiAgICAgICAgICAgICAgICAgICAgPHN1Yj48Yj5Nb2hpYjgzNDwvYj48L3N1Yj4KICAgICAgICAgICAgICAgIDwvYT4KICAgICAgICAgICAgPC90ZD4KICAgICAgICAgICAgPHRkIGFsaWduPSJjZW50ZXIiPgogICAgICAgICAgICAgICAgPGEgaHJlZj0iaHR0cHM6Ly9naXRodWIuY29tL21jb2xsaW5hIj4KICAgICAgICAgICAgICAgICAgICA8aW1nIHNyYz0iaHR0cHM6Ly9hdmF0YXJzLmdpdGh1YnVzZXJjb250ZW50LmNvbS91LzUyMTk1P3Y9NCIgd2lkdGg9IjEwMDsiIGFsdD0ibWNvbGxpbmEiLz4KICAgICAgICAgICAgICAgICAgICA8YnIgLz4KICAgICAgICAgICAgICAgICAgICA8c3ViPjxiPm1jb2xsaW5hPC9iPjwvc3ViPgogICAgICAgICAgICAgICAgPC9hPgogICAgICAgICAgICA8L3RkPgogICAgICAgICAgICA8dGQgYWxpZ249ImNlbnRlciI+CiAgICAgICAgICAgICAgICA8YSBocmVmPSJodHRwczovL2dpdGh1Yi5jb20vbXBtaW5hcmRpIj4KICAgICAgICAgICAgICAgICAgICA8aW1nIHNyYz0iaHR0cHM6Ly9hdmF0YXJzLmdpdGh1YnVzZXJjb250ZW50LmNvbS91Lzg1ODc1Njc/dj00IiB3aWR0aD0iMTAwOyIgYWx0PSJtcG1pbmFyZGkiLz4KICAgICAgICAgICAgICAgICAgICA8YnIgLz4KICAgICAgICAgICAgICAgICAgICA8c3ViPjxiPm1wbWluYXJkaTwvYj48L3N1Yj4KICAgICAgICAgICAgICAgIDwvYT4KICAgICAgICAgICAgPC90ZD4KICAgICAgICAgICAgPHRkIGFsaWduPSJjZW50ZXIiPgogICAgICAgICAgICAgICAgPGEgaHJlZj0iaHR0cHM6Ly9naXRodWIuY29tL3NvdWxjaGlsZCI+CiAgICAgICAgICAgICAgICAgICAgPGltZyBzcmM9Imh0dHBzOi8vYXZhdGFycy5naXRodWJ1c2VyY29udGVudC5jb20vdS81OTY0Mj92PTQiIHdpZHRoPSIxMDA7IiBhbHQ9InNvdWxjaGlsZCIvPgogICAgICAgICAgICAgICAgICAgIDxiciAvPgogICAgICAgICAgICAgICAgICAgIDxzdWI+PGI+c291bGNoaWxkPC9iPjwvc3ViPgogICAgICAgICAgICAgICAgPC9hPgogICAgICAgICAgICA8L3RkPgogICAgICAgICAgICA8dGQgYWxpZ249ImNlbnRlciI+CiAgICAgICAgICAgICAgICA8YSBocmVmPSJodHRwczovL2dpdGh1Yi5jb20vaGV4MGlkIj4KICAgICAgICAgICAgICAgICAgICA8aW1nIHNyYz0iaHR0cHM6Ly9hdmF0YXJzLmdpdGh1YnVzZXJjb250ZW50LmNvbS91LzUyNzYyNjE/dj00IiB3aWR0aD0iMTAwOyIgYWx0PSJoZXgwaWQiLz4KICAgICAgICAgICAgICAgICAgICA8YnIgLz4KICAgICAgICAgICAgICAgICAgICA8c3ViPjxiPmhleDBpZDwvYj48L3N1Yj4KICAgICAgICAgICAgICAgIDwvYT4KICAgICAgICAgICAgPC90ZD4KICAgICAgICAgICAgPHRkIGFsaWduPSJjZW50ZXIiPgogICAgICAgICAgICAgICAgPGEgaHJlZj0iaHR0cHM6Ly9naXRodWIuY29tL3lrZG9qbyI+CiAgICAgICAgICAgICAgICAgICAgPGltZyBzcmM9Imh0dHBzOi8vYXZhdGFycy5naXRodWJ1c2VyY29udGVudC5jb20vdS8xODExNjUxP3Y9NCIgd2lkdGg9IjEwMDsiIGFsdD0ieWtkb2pvIi8+CiAgICAgICAgICAgICAgICAgICAgPGJyIC8+CiAgICAgICAgICAgICAgICAgICAgPHN1Yj48Yj55a2Rvam88L2I+PC9zdWI+CiAgICAgICAgICAgICAgICA8L2E+CiAgICAgICAgICAgIDwvdGQ+CgkJPC90cj4KCQk8dHI+CiAgICAgICAgICAgIDx0ZCBhbGlnbj0iY2VudGVyIj4KICAgICAgICAgICAgICAgIDxhIGhyZWY9Imh0dHBzOi8vZ2l0aHViLmNvbS9FZGdhcmFzenMiPgogICAgICAgICAgICAgICAgICAgIDxpbWcgc3JjPSJodHRwczovL2F2YXRhcnMuZ2l0aHVidXNlcmNvbnRlbnQuY29tL3UvNTU2OTYyNjg/dj00IiB3aWR0aD0iMTAwOyIgYWx0PSJFZGdhcmFzenMiLz4KICAgICAgICAgICAgICAgICAgICA8YnIgLz4KICAgICAgICAgICAgICAgICAgICA8c3ViPjxiPkVkZ2FyYXN6czwvYj48L3N1Yj4KICAgICAgICAgICAgICAgIDwvYT4KICAgICAgICAgICAgPC90ZD4KICAgICAgICAgICAgPHRkIGFsaWduPSJjZW50ZXIiPgogICAgICAgICAgICAgICAgPGEgaHJlZj0iaHR0cHM6Ly9naXRodWIuY29tL2ZlZGVyaWNvYm9uZCI+CiAgICAgICAgICAgICAgICAgICAgPGltZyBzcmM9Imh0dHBzOi8vYXZhdGFycy5naXRodWJ1c2VyY29udGVudC5jb20vdS8xMzg0MjY/dj00IiB3aWR0aD0iMTAwOyIgYWx0PSJmZWRlcmljb2JvbmQiLz4KICAgICAgICAgICAgICAgICAgICA8YnIgLz4KICAgICAgICAgICAgICAgICAgICA8c3ViPjxiPmZlZGVyaWNvYm9uZDwvYj48L3N1Yj4KICAgICAgICAgICAgICAgIDwvYT4KICAgICAgICAgICAgPC90ZD4KICAgICAgICAgICAgPHRkIGFsaWduPSJjZW50ZXIiPgogICAgICAgICAgICAgICAgPGEgaHJlZj0iaHR0cHM6Ly9naXRodWIuY29tL2dzbWNkb25hbGQiPgogICAgICAgICAgICAgICAgICAgIDxpbWcgc3JjPSJodHRwczovL2F2YXRhcnMuZ2l0aHVidXNlcmNvbnRlbnQuY29tL3UvMzYwMDMzNzg/dj00IiB3aWR0aD0iMTAwOyIgYWx0PSJnc21jZG9uYWxkIi8+CiAgICAgICAgICAgICAgICAgICAgPGJyIC8+CiAgICAgICAgICAgICAgICAgICAgPHN1Yj48Yj5nc21jZG9uYWxkPC9iPjwvc3ViPgogICAgICAgICAgICAgICAgPC9hPgogICAgICAgICAgICA8L3RkPgogICAgICAgICAgICA8dGQgYWxpZ249ImNlbnRlciI+CiAgICAgICAgICAgICAgICA8YSBocmVmPSJodHRwczovL2dpdGh1Yi5jb20vbW91aGFubmFkLXNoIj4KICAgICAgICAgICAgICAgICAgICA8aW1nIHNyYz0iaHR0cHM6Ly9hdmF0YXJzLmdpdGh1YnVzZXJjb250ZW50LmNvbS91LzE4NDk1NzQwP3Y9NCIgd2lkdGg9IjEwMDsiIGFsdD0ibW91aGFubmFkLXNoIi8+CiAgICAgICAgICAgICAgICAgICAgPGJyIC8+CiAgICAgICAgICAgICAgICAgICAgPHN1Yj48Yj5tb3VoYW5uYWQtc2g8L2I+PC9zdWI+CiAgICAgICAgICAgICAgICA8L2E+CiAgICAgICAgICAgIDwvdGQ+CiAgICAgICAgICAgIDx0ZCBhbGlnbj0iY2VudGVyIj4KICAgICAgICAgICAgICAgIDxhIGhyZWY9Imh0dHBzOi8vZ2l0aHViLmNvbS9tYXNvbi1hdC1waWVjZXMiPgogICAgICAgICAgICAgICAgICAgIDxpbWcgc3JjPSJodHRwczovL2F2YXRhcnMuZ2l0aHVidXNlcmNvbnRlbnQuY29tL3UvMTIzNDIxMDg1P3Y9NCIgd2lkdGg9IjEwMDsiIGFsdD0ibWFzb24tYXQtcGllY2VzIi8+CiAgICAgICAgICAgICAgICAgICAgPGJyIC8+CiAgICAgICAgICAgICAgICAgICAgPHN1Yj48Yj5tYXNvbi1hdC1waWVjZXM8L2I+PC9zdWI+CiAgICAgICAgICAgICAgICA8L2E+CiAgICAgICAgICAgIDwvdGQ+CiAgICAgICAgICAgIDx0ZCBhbGlnbj0iY2VudGVyIj4KICAgICAgICAgICAgICAgIDxhIGhyZWY9Imh0dHBzOi8vZ2l0aHViLmNvbS9NYXNvbi1MaXR0bGUiPgogICAgICAgICAgICAgICAgICAgIDxpbWcgc3JjPSJodHRwczovL2F2YXRhcnMuZ2l0aHVidXNlcmNvbnRlbnQuY29tL3UvMTA1MDA4NDQxP3Y9NCIgd2lkdGg9IjEwMDsiIGFsdD0iTWFzb24tTGl0dGxlIi8+CiAgICAgICAgICAgICAgICAgICAgPGJyIC8+CiAgICAgICAgICAgICAgICAgICAgPHN1Yj48Yj5NYXNvbi1MaXR0bGU8L2I+PC9zdWI+CiAgICAgICAgICAgICAgICA8L2E+CiAgICAgICAgICAgIDwvdGQ+CgkJPC90cj4KCQk8dHI+CiAgICAgICAgICAgIDx0ZCBhbGlnbj0iY2VudGVyIj4KICAgICAgICAgICAgICAgIDxhIGhyZWY9Imh0dHBzOi8vZ2l0aHViLmNvbS9NYXhCcmVpZGEiPgogICAgICAgICAgICAgICAgICAgIDxpbWcgc3JjPSJodHRwczovL2F2YXRhcnMuZ2l0aHVidXNlcmNvbnRlbnQuY29tL3UvMTg2ODU1Nzk/dj00IiB3aWR0aD0iMTAwOyIgYWx0PSJNYXhCcmVpZGEiLz4KICAgICAgICAgICAgICAgICAgICA8YnIgLz4KICAgICAgICAgICAgICAgICAgICA8c3ViPjxiPk1heEJyZWlkYTwvYj48L3N1Yj4KICAgICAgICAgICAgICAgIDwvYT4KICAgICAgICAgICAgPC90ZD4KICAgICAgICAgICAgPHRkIGFsaWduPSJjZW50ZXIiPgogICAgICAgICAgICAgICAgPGEgaHJlZj0iaHR0cHM6Ly9naXRodWIuY29tL3JpY2tpaGFzdGluZ3MiPgogICAgICAgICAgICAgICAgICAgIDxpbWcgc3JjPSJodHRwczovL2F2YXRhcnMuZ2l0aHVidXNlcmNvbnRlbnQuY29tL3UvNDU2NjA/dj00IiB3aWR0aD0iMTAwOyIgYWx0PSJyaWNraWhhc3RpbmdzIi8+CiAgICAgICAgICAgICAgICAgICAgPGJyIC8+CiAgICAgICAgICAgICAgICAgICAgPHN1Yj48Yj5yaWNraWhhc3RpbmdzPC9iPjwvc3ViPgogICAgICAgICAgICAgICAgPC9hPgogICAgICAgICAgICA8L3RkPgogICAgICAgICAgICA8dGQgYWxpZ249ImNlbnRlciI+CiAgICAgICAgICAgICAgICA8YSBocmVmPSJodHRwczovL2dpdGh1Yi5jb20vcmJhbmdlIj4KICAgICAgICAgICAgICAgICAgICA8aW1nIHNyYz0iaHR0cHM6Ly9hdmF0YXJzLmdpdGh1YnVzZXJjb250ZW50LmNvbS91LzEzMjUyNTc0P3Y9NCIgd2lkdGg9IjEwMDsiIGFsdD0icmJhbmdlIi8+CiAgICAgICAgICAgICAgICAgICAgPGJyIC8+CiAgICAgICAgICAgICAgICAgICAgPHN1Yj48Yj5yYmFuZ2U8L2I+PC9zdWI+CiAgICAgICAgICAgICAgICA8L2E+CiAgICAgICAgICAgIDwvdGQ+CiAgICAgICAgICAgIDx0ZCBhbGlnbj0iY2VudGVyIj4KICAgICAgICAgICAgICAgIDxhIGhyZWY9Imh0dHBzOi8vZ2l0aHViLmNvbS9yb21hbmhyeW5ldnljaCI+CiAgICAgICAgICAgICAgICAgICAgPGltZyBzcmM9Imh0dHBzOi8vYXZhdGFycy5naXRodWJ1c2VyY29udGVudC5jb20vdS84MjIwOTE5OD92PTQiIHdpZHRoPSIxMDA7IiBhbHQ9InJvbWFuaHJ5bmV2eWNoIi8+CiAgICAgICAgICAgICAgICAgICAgPGJyIC8+CiAgICAgICAgICAgICAgICAgICAgPHN1Yj48Yj5yb21hbmhyeW5ldnljaDwvYj48L3N1Yj4KICAgICAgICAgICAgICAgIDwvYT4KICAgICAgICAgICAgPC90ZD4KICAgICAgICAgICAgPHRkIGFsaWduPSJjZW50ZXIiPgogICAgICAgICAgICAgICAgPGEgaHJlZj0iaHR0cHM6Ly9naXRodWIuY29tL1NUUDU5NDAiPgogICAgICAgICAgICAgICAgICAgIDxpbWcgc3JjPSJodHRwczovL2F2YXRhcnMuZ2l0aHVidXNlcmNvbnRlbnQuY29tL3UvMjExNDQzMDM/dj00IiB3aWR0aD0iMTAwOyIgYWx0PSJTVFA1OTQwIi8+CiAgICAgICAgICAgICAgICAgICAgPGJyIC8+CiAgICAgICAgICAgICAgICAgICAgPHN1Yj48Yj5TVFA1OTQwPC9iPjwvc3ViPgogICAgICAgICAgICAgICAgPC9hPgogICAgICAgICAgICA8L3RkPgogICAgICAgICAgICA8dGQgYWxpZ249ImNlbnRlciI+CiAgICAgICAgICAgICAgICA8YSBocmVmPSJodHRwczovL2dpdGh1Yi5jb20vY2FwdGFpbnNhZmlhIj4KICAgICAgICAgICAgICAgICAgICA8aW1nIHNyYz0iaHR0cHM6Ly9hdmF0YXJzLmdpdGh1YnVzZXJjb250ZW50LmNvbS91LzE4NTc5OTM/dj00IiB3aWR0aD0iMTAwOyIgYWx0PSJjYXB0YWluc2FmaWEiLz4KICAgICAgICAgICAgICAgICAgICA8YnIgLz4KICAgICAgICAgICAgICAgICAgICA8c3ViPjxiPmNhcHRhaW5zYWZpYTwvYj48L3N1Yj4KICAgICAgICAgICAgICAgIDwvYT4KICAgICAgICAgICAgPC90ZD4KCQk8L3RyPgoJCTx0cj4KICAgICAgICAgICAgPHRkIGFsaWduPSJjZW50ZXIiPgogICAgICAgICAgICAgICAgPGEgaHJlZj0iaHR0cHM6Ly9naXRodWIuY29tL3JlYWxzYW1hIj4KICAgICAgICAgICAgICAgICAgICA8aW1nIHNyYz0iaHR0cHM6Ly9hdmF0YXJzLmdpdGh1YnVzZXJjb250ZW50LmNvbS91LzQ2NDAzMjg0P3Y9NCIgd2lkdGg9IjEwMDsiIGFsdD0icmVhbHNhbWEiLz4KICAgICAgICAgICAgICAgICAgICA8YnIgLz4KICAgICAgICAgICAgICAgICAgICA8c3ViPjxiPnJlYWxzYW1hPC9iPjwvc3ViPgogICAgICAgICAgICAgICAgPC9hPgogICAgICAgICAgICA8L3RkPgogICAgICAgICAgICA8dGQgYWxpZ249ImNlbnRlciI+CiAgICAgICAgICAgICAgICA8YSBocmVmPSJodHRwczovL2dpdGh1Yi5jb20vU2ViYXN0aWFuQmllbmVydCI+CiAgICAgICAgICAgICAgICAgICAgPGltZyBzcmM9Imh0dHBzOi8vYXZhdGFycy5naXRodWJ1c2VyY29udGVudC5jb20vdS8xNzQ1ODc4NT92PTQiIHdpZHRoPSIxMDA7IiBhbHQ9IlNlYmFzdGlhbkJpZW5lcnQiLz4KICAgICAgICAgICAgICAgICAgICA8YnIgLz4KICAgICAgICAgICAgICAgICAgICA8c3ViPjxiPlNlYmFzdGlhbkJpZW5lcnQ8L2I+PC9zdWI+CiAgICAgICAgICAgICAgICA8L2E+CiAgICAgICAgICAgIDwvdGQ+CiAgICAgICAgICAgIDx0ZCBhbGlnbj0iY2VudGVyIj4KICAgICAgICAgICAgICAgIDxhIGhyZWY9Imh0dHBzOi8vZ2l0aHViLmNvbS9kb3Rmb3J0dW4iPgogICAgICAgICAgICAgICAgICAgIDxpbWcgc3JjPSJodHRwczovL2F2YXRhcnMuZ2l0aHVidXNlcmNvbnRlbnQuY29tL3UvMTE4MjI5NTc/dj00IiB3aWR0aD0iMTAwOyIgYWx0PSJkb3Rmb3J0dW4iLz4KICAgICAgICAgICAgICAgICAgICA8YnIgLz4KICAgICAgICAgICAgICAgICAgICA8c3ViPjxiPmRvdGZvcnR1bjwvYj48L3N1Yj4KICAgICAgICAgICAgICAgIDwvYT4KICAgICAgICAgICAgPC90ZD4KICAgICAgICAgICAgPHRkIGFsaWduPSJjZW50ZXIiPgogICAgICAgICAgICAgICAgPGEgaHJlZj0iaHR0cHM6Ly9naXRodWIuY29tL3NvR2l0Ij4KICAgICAgICAgICAgICAgICAgICA8aW1nIHNyYz0iaHR0cHM6Ly9hdmF0YXJzLmdpdGh1YnVzZXJjb250ZW50LmNvbS91LzEwNjgyNzk4P3Y9NCIgd2lkdGg9IjEwMDsiIGFsdD0ic29HaXQiLz4KICAgICAgICAgICAgICAgICAgICA8YnIgLz4KICAgICAgICAgICAgICAgICAgICA8c3ViPjxiPnNvR2l0PC9iPjwvc3ViPgogICAgICAgICAgICAgICAgPC9hPgogICAgICAgICAgICA8L3RkPgogICAgICAgICAgICA8dGQgYWxpZ249ImNlbnRlciI+CiAgICAgICAgICAgICAgICA8YSBocmVmPSJodHRwczovL2dpdGh1Yi5jb20vc2luaDExNzgwMSI+CiAgICAgICAgICAgICAgICAgICAgPGltZyBzcmM9Imh0dHBzOi8vYXZhdGFycy5naXRodWJ1c2VyY29udGVudC5jb20vdS80MzY5NjcxNT92PTQiIHdpZHRoPSIxMDA7IiBhbHQ9InNpbmgxMTc4MDEiLz4KICAgICAgICAgICAgICAgICAgICA8YnIgLz4KICAgICAgICAgICAgICAgICAgICA8c3ViPjxiPnNpbmgxMTc4MDE8L2I+PC9zdWI+CiAgICAgICAgICAgICAgICA8L2E+CiAgICAgICAgICAgIDwvdGQ+CiAgICAgICAgICAgIDx0ZCBhbGlnbj0iY2VudGVyIj4KICAgICAgICAgICAgICAgIDxhIGhyZWY9Imh0dHBzOi8vZ2l0aHViLmNvbS90aGliYXVsdGxlb3VheSI+CiAgICAgICAgICAgICAgICAgICAgPGltZyBzcmM9Imh0dHBzOi8vYXZhdGFycy5naXRodWJ1c2VyY29udGVudC5jb20vdS8xMzg5NDA1ND92PTQiIHdpZHRoPSIxMDA7IiBhbHQ9InRoaWJhdWx0bGVvdWF5Ii8+CiAgICAgICAgICAgICAgICAgICAgPGJyIC8+CiAgICAgICAgICAgICAgICAgICAgPHN1Yj48Yj50aGliYXVsdGxlb3VheTwvYj48L3N1Yj4KICAgICAgICAgICAgICAgIDwvYT4KICAgICAgICAgICAgPC90ZD4KCQk8L3RyPgoJCTx0cj4KICAgICAgICAgICAgPHRkIGFsaWduPSJjZW50ZXIiPgogICAgICAgICAgICAgICAgPGEgaHJlZj0iaHR0cHM6Ly9naXRodWIuY29tL3RpbWhldWVyIj4KICAgICAgICAgICAgICAgICAgICA8aW1nIHNyYz0iaHR0cHM6Ly9hdmF0YXJzLmdpdGh1YnVzZXJjb250ZW50LmNvbS91LzQ4MjE/dj00IiB3aWR0aD0iMTAwOyIgYWx0PSJ0aW1oZXVlciIvPgogICAgICAgICAgICAgICAgICAgIDxiciAvPgogICAgICAgICAgICAgICAgICAgIDxzdWI+PGI+dGltaGV1ZXI8L2I+PC9zdWI+CiAgICAgICAgICAgICAgICA8L2E+CiAgICAgICAgICAgIDwvdGQ+CiAgICAgICAgICAgIDx0ZCBhbGlnbj0iY2VudGVyIj4KICAgICAgICAgICAgICAgIDxhIGhyZWY9Imh0dHBzOi8vZ2l0aHViLmNvbS9iaXRsYWItcnVpemhpIj4KICAgICAgICAgICAgICAgICAgICA8aW1nIHNyYz0iaHR0cHM6Ly9hdmF0YXJzLmdpdGh1YnVzZXJjb250ZW50LmNvbS91LzExMDM4MDYxMz92PTQiIHdpZHRoPSIxMDA7IiBhbHQ9ImJpdGxhYi1ydWl6aGkiLz4KICAgICAgICAgICAgICAgICAgICA8YnIgLz4KICAgICAgICAgICAgICAgICAgICA8c3ViPjxiPmJpdGxhYi1ydWl6aGk8L2I+PC9zdWI+CiAgICAgICAgICAgICAgICA8L2E+CiAgICAgICAgICAgIDwvdGQ+CiAgICAgICAgICAgIDx0ZCBhbGlnbj0iY2VudGVyIj4KICAgICAgICAgICAgICAgIDxhIGhyZWY9Imh0dHBzOi8vZ2l0aHViLmNvbS9DaGlubGlubGVlIj4KICAgICAgICAgICAgICAgICAgICA8aW1nIHNyYz0iaHR0cHM6Ly9hdmF0YXJzLmdpdGh1YnVzZXJjb250ZW50LmNvbS91LzQ5MTU0NjIyP3Y9NCIgd2lkdGg9IjEwMDsiIGFsdD0iQ2hpbmxpbmxlZSIvPgogICAgICAgICAgICAgICAgICAgIDxiciAvPgogICAgICAgICAgICAgICAgICAgIDxzdWI+PGI+Q2hpbmxpbmxlZTwvYj48L3N1Yj4KICAgICAgICAgICAgICAgIDwvYT4KICAgICAgICAgICAgPC90ZD4KICAgICAgICAgICAgPHRkIGFsaWduPSJjZW50ZXIiPgogICAgICAgICAgICAgICAgPGEgaHJlZj0iaHR0cHM6Ly9naXRodWIuY29tL1dpbGxpYW1Cb252aW5pIj4KICAgICAgICAgICAgICAgICAgICA8aW1nIHNyYz0iaHR0cHM6Ly9hdmF0YXJzLmdpdGh1YnVzZXJjb250ZW50LmNvbS91LzM3ODM0MTUwP3Y9NCIgd2lkdGg9IjEwMDsiIGFsdD0iV2lsbGlhbUJvbnZpbmkiLz4KICAgICAgICAgICAgICAgICAgICA8YnIgLz4KICAgICAgICAgICAgICAgICAgICA8c3ViPjxiPldpbGxpYW1Cb252aW5pPC9iPjwvc3ViPgogICAgICAgICAgICAgICAgPC9hPgogICAgICAgICAgICA8L3RkPgogICAgICAgICAgICA8dGQgYWxpZ249ImNlbnRlciI+CiAgICAgICAgICAgICAgICA8YSBocmVmPSJodHRwczovL2dpdGh1Yi5jb20veC1kZWxmaW5vIj4KICAgICAgICAgICAgICAgICAgICA8aW1nIHNyYz0iaHR0cHM6Ly9hdmF0YXJzLmdpdGh1YnVzZXJjb250ZW50LmNvbS91LzY3MTkyNTc5P3Y9NCIgd2lkdGg9IjEwMDsiIGFsdD0ieC1kZWxmaW5vIi8+CiAgICAgICAgICAgICAgICAgICAgPGJyIC8+CiAgICAgICAgICAgICAgICAgICAgPHN1Yj48Yj54LWRlbGZpbm88L2I+PC9zdWI+CiAgICAgICAgICAgICAgICA8L2E+CiAgICAgICAgICAgIDwvdGQ+CiAgICAgICAgICAgIDx0ZCBhbGlnbj0iY2VudGVyIj4KICAgICAgICAgICAgICAgIDxhIGhyZWY9Imh0dHBzOi8vZ2l0aHViLmNvbS9Gb3RpZU1Db25zdGFudCI+CiAgICAgICAgICAgICAgICAgICAgPGltZyBzcmM9Imh0dHBzOi8vYXZhdGFycy5naXRodWJ1c2VyY29udGVudC5jb20vdS80MjM3MjY1Nj92PTQiIHdpZHRoPSIxMDA7IiBhbHQ9IkZvdGllTUNvbnN0YW50Ii8+CiAgICAgICAgICAgICAgICAgICAgPGJyIC8+CiAgICAgICAgICAgICAgICAgICAgPHN1Yj48Yj5Gb3RpZU1Db25zdGFudDwvYj48L3N1Yj4KICAgICAgICAgICAgICAgIDwvYT4KICAgICAgICAgICAgPC90ZD4KCQk8L3RyPgoJCTx0cj4KICAgICAgICAgICAgPHRkIGFsaWduPSJjZW50ZXIiPgogICAgICAgICAgICAgICAgPGEgaHJlZj0iaHR0cHM6Ly9naXRodWIuY29tL3RzaXdlay1waXdpayI+CiAgICAgICAgICAgICAgICAgICAgPGltZyBzcmM9Imh0dHBzOi8vYXZhdGFycy5naXRodWJ1c2VyY29udGVudC5jb20vdS8xMTczNzMzMzI/dj00IiB3aWR0aD0iMTAwOyIgYWx0PSJ0c2l3ZWstcGl3aWsiLz4KICAgICAgICAgICAgICAgICAgICA8YnIgLz4KICAgICAgICAgICAgICAgICAgICA8c3ViPjxiPnRzaXdlay1waXdpazwvYj48L3N1Yj4KICAgICAgICAgICAgICAgIDwvYT4KICAgICAgICAgICAgPC90ZD4KICAgICAgICAgICAgPHRkIGFsaWduPSJjZW50ZXIiPgogICAgICAgICAgICAgICAgPGEgaHJlZj0iaHR0cHM6Ly9naXRodWIuY29tL2R1bmtsZXNUb2FzdCI+CiAgICAgICAgICAgICAgICAgICAgPGltZyBzcmM9Imh0dHBzOi8vYXZhdGFycy5naXRodWJ1c2VyY29udGVudC5jb20vdS8xNzI3OTQ4NT92PTQiIHdpZHRoPSIxMDA7IiBhbHQ9ImR1bmtsZXNUb2FzdCIvPgogICAgICAgICAgICAgICAgICAgIDxiciAvPgogICAgICAgICAgICAgICAgICAgIDxzdWI+PGI+ZHVua2xlc1RvYXN0PC9iPjwvc3ViPgogICAgICAgICAgICAgICAgPC9hPgogICAgICAgICAgICA8L3RkPgogICAgICAgICAgICA8dGQgYWxpZ249ImNlbnRlciI+CiAgICAgICAgICAgICAgICA8YSBocmVmPSJodHRwczovL2dpdGh1Yi5jb20vc2lncHduZWQiPgogICAgICAgICAgICAgICAgICAgIDxpbWcgc3JjPSJodHRwczovL2F2YXRhcnMuZ2l0aHVidXNlcmNvbnRlbnQuY29tL3UvMTIzNjMwMj92PTQiIHdpZHRoPSIxMDA7IiBhbHQ9InNpZ3B3bmVkIi8+CiAgICAgICAgICAgICAgICAgICAgPGJyIC8+CiAgICAgICAgICAgICAgICAgICAgPHN1Yj48Yj5zaWdwd25lZDwvYj48L3N1Yj4KICAgICAgICAgICAgICAgIDwvYT4KICAgICAgICAgICAgPC90ZD4KICAgICAgICAgICAgPHRkIGFsaWduPSJjZW50ZXIiPgogICAgICAgICAgICAgICAgPGEgaHJlZj0iaHR0cHM6Ly9naXRodWIuY29tL2FyYXNoc2hleWRhIj4KICAgICAgICAgICAgICAgICAgICA8aW1nIHNyYz0iaHR0cHM6Ly9hdmF0YXJzLmdpdGh1YnVzZXJjb250ZW50LmNvbS91LzM4OTIyMjAzP3Y9NCIgd2lkdGg9IjEwMDsiIGFsdD0iYXJhc2hzaGV5ZGEiLz4KICAgICAgICAgICAgICAgICAgICA8YnIgLz4KICAgICAgICAgICAgICAgICAgICA8c3ViPjxiPmFyYXNoc2hleWRhPC9iPjwvc3ViPgogICAgICAgICAgICAgICAgPC9hPgogICAgICAgICAgICA8L3RkPgogICAgICAgICAgICA8dGQgYWxpZ249ImNlbnRlciI+CiAgICAgICAgICAgICAgICA8YSBocmVmPSJodHRwczovL2dpdGh1Yi5jb20vYXJ0aHVyZmlvcmV0dGUiPgogICAgICAgICAgICAgICAgICAgIDxpbWcgc3JjPSJodHRwczovL2F2YXRhcnMuZ2l0aHVidXNlcmNvbnRlbnQuY29tL3UvNDc1Mzc3MDQ/dj00IiB3aWR0aD0iMTAwOyIgYWx0PSJhcnRodXJmaW9yZXR0ZSIvPgogICAgICAgICAgICAgICAgICAgIDxiciAvPgogICAgICAgICAgICAgICAgICAgIDxzdWI+PGI+YXJ0aHVyZmlvcmV0dGU8L2I+PC9zdWI+CiAgICAgICAgICAgICAgICA8L2E+CiAgICAgICAgICAgIDwvdGQ+CiAgICAgICAgICAgIDx0ZCBhbGlnbj0iY2VudGVyIj4KICAgICAgICAgICAgICAgIDxhIGhyZWY9Imh0dHBzOi8vZ2l0aHViLmNvbS96c2lsYmkiPgogICAgICAgICAgICAgICAgICAgIDxpbWcgc3JjPSJodHRwczovL2F2YXRhcnMuZ2l0aHVidXNlcmNvbnRlbnQuY29tL3UvMzg4NjY1OD92PTQiIHdpZHRoPSIxMDA7IiBhbHQ9InpzaWxiaSIvPgogICAgICAgICAgICAgICAgICAgIDxiciAvPgogICAgICAgICAgICAgICAgICAgIDxzdWI+PGI+enNpbGJpPC9iPjwvc3ViPgogICAgICAgICAgICAgICAgPC9hPgogICAgICAgICAgICA8L3RkPgoJCTwvdHI+CgkJPHRyPgogICAgICAgICAgICA8dGQgYWxpZ249ImNlbnRlciI+CiAgICAgICAgICAgICAgICA8YSBocmVmPSJodHRwczovL2dpdGh1Yi5jb20vYmRwaXByYXZhIj4KICAgICAgICAgICAgICAgICAgICA8aW1nIHNyYz0iaHR0cHM6Ly9hdmF0YXJzLmdpdGh1YnVzZXJjb250ZW50LmNvbS91Lzc4NzEyMDk/dj00IiB3aWR0aD0iMTAwOyIgYWx0PSJiZHBpcHJhdmEiLz4KICAgICAgICAgICAgICAgICAgICA8YnIgLz4KICAgICAgICAgICAgICAgICAgICA8c3ViPjxiPmJkcGlwcmF2YTwvYj48L3N1Yj4KICAgICAgICAgICAgICAgIDwvYT4KICAgICAgICAgICAgPC90ZD4KICAgICAgICAgICAgPHRkIGFsaWduPSJjZW50ZXIiPgogICAgICAgICAgICAgICAgPGEgaHJlZj0iaHR0cHM6Ly9naXRodWIuY29tL2JydW5vZ3Jjc2FkYSI+CiAgICAgICAgICAgICAgICAgICAgPGltZyBzcmM9Imh0dHBzOi8vYXZhdGFycy5naXRodWJ1c2VyY29udGVudC5jb20vdS81NDY3MzIwNT92PTQiIHdpZHRoPSIxMDA7IiBhbHQ9ImJydW5vZ3Jjc2FkYSIvPgogICAgICAgICAgICAgICAgICAgIDxiciAvPgogICAgICAgICAgICAgICAgICAgIDxzdWI+PGI+YnJ1bm9ncmNzYWRhPC9iPjwvc3ViPgogICAgICAgICAgICAgICAgPC9hPgogICAgICAgICAgICA8L3RkPgogICAgICAgICAgICA8dGQgYWxpZ249ImNlbnRlciI+CiAgICAgICAgICAgICAgICA8YSBocmVmPSJodHRwczovL2dpdGh1Yi5jb20vY2hyaXNsZWFybiI+CiAgICAgICAgICAgICAgICAgICAgPGltZyBzcmM9Imh0dHBzOi8vYXZhdGFycy5naXRodWJ1c2VyY29udGVudC5jb20vdS81ODc0ODY0P3Y9NCIgd2lkdGg9IjEwMDsiIGFsdD0iY2hyaXNsZWFybiIvPgogICAgICAgICAgICAgICAgICAgIDxiciAvPgogICAgICAgICAgICAgICAgICAgIDxzdWI+PGI+Y2hyaXNsZWFybjwvYj48L3N1Yj4KICAgICAgICAgICAgICAgIDwvYT4KICAgICAgICAgICAgPC90ZD4KICAgICAgICAgICAgPHRkIGFsaWduPSJjZW50ZXIiPgogICAgICAgICAgICAgICAgPGEgaHJlZj0iaHR0cHM6Ly9naXRodWIuY29tL2RhbnAiPgogICAgICAgICAgICAgICAgICAgIDxpbWcgc3JjPSJodHRwczovL2F2YXRhcnMuZ2l0aHVidXNlcmNvbnRlbnQuY29tL3UvMjE4Mj92PTQiIHdpZHRoPSIxMDA7IiBhbHQ9ImRhbnAiLz4KICAgICAgICAgICAgICAgICAgICA8YnIgLz4KICAgICAgICAgICAgICAgICAgICA8c3ViPjxiPmRhbnA8L2I+PC9zdWI+CiAgICAgICAgICAgICAgICA8L2E+CiAgICAgICAgICAgIDwvdGQ+CiAgICAgICAgICAgIDx0ZCBhbGlnbj0iY2VudGVyIj4KICAgICAgICAgICAgICAgIDxhIGhyZWY9Imh0dHBzOi8vZ2l0aHViLmNvbS9sdW5kaWJ1bmRpIj4KICAgICAgICAgICAgICAgICAgICA8aW1nIHNyYz0iaHR0cHM6Ly9hdmF0YXJzLmdpdGh1YnVzZXJjb250ZW50LmNvbS91LzkxMDk2MTI/dj00IiB3aWR0aD0iMTAwOyIgYWx0PSJsdW5kaWJ1bmRpIi8+CiAgICAgICAgICAgICAgICAgICAgPGJyIC8+CiAgICAgICAgICAgICAgICAgICAgPHN1Yj48Yj5sdW5kaWJ1bmRpPC9iPjwvc3ViPgogICAgICAgICAgICAgICAgPC9hPgogICAgICAgICAgICA8L3RkPgogICAgICAgICAgICA8dGQgYWxpZ249ImNlbnRlciI+CiAgICAgICAgICAgICAgICA8YSBocmVmPSJodHRwczovL2dpdGh1Yi5jb20vZW1tYW51ZWwtZmVyZG1hbiI+CiAgICAgICAgICAgICAgICAgICAgPGltZyBzcmM9Imh0dHBzOi8vYXZhdGFycy5naXRodWJ1c2VyY29udGVudC5jb20vdS8zNTQ3MDkyMT92PTQiIHdpZHRoPSIxMDA7IiBhbHQ9ImVtbWFudWVsLWZlcmRtYW4iLz4KICAgICAgICAgICAgICAgICAgICA8YnIgLz4KICAgICAgICAgICAgICAgICAgICA8c3ViPjxiPmVtbWFudWVsLWZlcmRtYW48L2I+PC9zdWI+CiAgICAgICAgICAgICAgICA8L2E+CiAgICAgICAgICAgIDwvdGQ+CgkJPC90cj4KCQk8dHI+CiAgICAgICAgICAgIDx0ZCBhbGlnbj0iY2VudGVyIj4KICAgICAgICAgICAgICAgIDxhIGhyZWY9Imh0dHBzOi8vZ2l0aHViLmNvbS9GZGF3Z3MiPgogICAgICAgICAgICAgICAgICAgIDxpbWcgc3JjPSJodHRwczovL2F2YXRhcnMuZ2l0aHVidXNlcmNvbnRlbnQuY29tL3UvNDM4MTQxNDA/dj00IiB3aWR0aD0iMTAwOyIgYWx0PSJGZGF3Z3MiLz4KICAgICAgICAgICAgICAgICAgICA8YnIgLz4KICAgICAgICAgICAgICAgICAgICA8c3ViPjxiPkZkYXdnczwvYj48L3N1Yj4KICAgICAgICAgICAgICAgIDwvYT4KICAgICAgICAgICAgPC90ZD4KICAgICAgICAgICAgPHRkIGFsaWduPSJjZW50ZXIiPgogICAgICAgICAgICAgICAgPGEgaHJlZj0iaHR0cHM6Ly9naXRodWIuY29tL0dyZXlYb3IiPgogICAgICAgICAgICAgICAgICAgIDxpbWcgc3JjPSJodHRwczovL2F2YXRhcnMuZ2l0aHVidXNlcmNvbnRlbnQuY29tL3UvNzk2MDIyNzM/dj00IiB3aWR0aD0iMTAwOyIgYWx0PSJHcmV5WG9yIi8+CiAgICAgICAgICAgICAgICAgICAgPGJyIC8+CiAgICAgICAgICAgICAgICAgICAgPHN1Yj48Yj5HcmV5WG9yPC9iPjwvc3ViPgogICAgICAgICAgICAgICAgPC9hPgogICAgICAgICAgICA8L3RkPgogICAgICAgICAgICA8dGQgYWxpZ249ImNlbnRlciI+CiAgICAgICAgICAgICAgICA8YSBocmVmPSJodHRwczovL2dpdGh1Yi5jb20vSGVsZ2VTdmVycmUiPgogICAgICAgICAgICAgICAgICAgIDxpbWcgc3JjPSJodHRwczovL2F2YXRhcnMuZ2l0aHVidXNlcmNvbnRlbnQuY29tL3UvMTA4OTY1Mj92PTQiIHdpZHRoPSIxMDA7IiBhbHQ9IkhlbGdlU3ZlcnJlIi8+CiAgICAgICAgICAgICAgICAgICAgPGJyIC8+CiAgICAgICAgICAgICAgICAgICAgPHN1Yj48Yj5IZWxnZVN2ZXJyZTwvYj48L3N1Yj4KICAgICAgICAgICAgICAgIDwvYT4KICAgICAgICAgICAgPC90ZD4KICAgICAgICAgICAgPHRkIGFsaWduPSJjZW50ZXIiPgogICAgICAgICAgICAgICAgPGEgaHJlZj0iaHR0cHM6Ly9naXRodWIuY29tL0NKSHdvbmciPgogICAgICAgICAgICAgICAgICAgIDxpbWcgc3JjPSJodHRwczovL2F2YXRhcnMuZ2l0aHVidXNlcmNvbnRlbnQuY29tL3UvOTA2MDU3P3Y9NCIgd2lkdGg9IjEwMDsiIGFsdD0iQ0pId29uZyIvPgogICAgICAgICAgICAgICAgICAgIDxiciAvPgogICAgICAgICAgICAgICAgICAgIDxzdWI+PGI+Q0pId29uZzwvYj48L3N1Yj4KICAgICAgICAgICAgICAgIDwvYT4KICAgICAgICAgICAgPC90ZD4KICAgICAgICAgICAgPHRkIGFsaWduPSJjZW50ZXIiPgogICAgICAgICAgICAgICAgPGEgaHJlZj0iaHR0cHM6Ly9naXRodWIuY29tL0ljZXlXdSI+CiAgICAgICAgICAgICAgICAgICAgPGltZyBzcmM9Imh0dHBzOi8vYXZhdGFycy5naXRodWJ1c2VyY29udGVudC5jb20vdS82NjA5NjI1ND92PTQiIHdpZHRoPSIxMDA7IiBhbHQ9IkljZXlXdSIvPgogICAgICAgICAgICAgICAgICAgIDxiciAvPgogICAgICAgICAgICAgICAgICAgIDxzdWI+PGI+SWNleVd1PC9iPjwvc3ViPgogICAgICAgICAgICAgICAgPC9hPgogICAgICAgICAgICA8L3RkPgogICAgICAgICAgICA8dGQgYWxpZ249ImNlbnRlciI+CiAgICAgICAgICAgICAgICA8YSBocmVmPSJodHRwczovL2dpdGh1Yi5jb20vSmFjb2JDb2ZmZWUiPgogICAgICAgICAgICAgICAgICAgIDxpbWcgc3JjPSJodHRwczovL2F2YXRhcnMuZ2l0aHVidXNlcmNvbnRlbnQuY29tL3UvNDU4ODQyNjQ/dj00IiB3aWR0aD0iMTAwOyIgYWx0PSJKYWNvYkNvZmZlZSIvPgogICAgICAgICAgICAgICAgICAgIDxiciAvPgogICAgICAgICAgICAgICAgICAgIDxzdWI+PGI+SmFjb2JDb2ZmZWU8L2I+PC9zdWI+CiAgICAgICAgICAgICAgICA8L2E+CiAgICAgICAgICAgIDwvdGQ+CgkJPC90cj4KCQk8dHI+CiAgICAgICAgICAgIDx0ZCBhbGlnbj0iY2VudGVyIj4KICAgICAgICAgICAgICAgIDxhIGhyZWY9Imh0dHBzOi8vZ2l0aHViLmNvbS9UaGVWYWFuIj4KICAgICAgICAgICAgICAgICAgICA8aW1nIHNyYz0iaHR0cHM6Ly9hdmF0YXJzLmdpdGh1YnVzZXJjb250ZW50LmNvbS91LzExMDg0ODU/dj00IiB3aWR0aD0iMTAwOyIgYWx0PSJUaGVWYWFuIi8+CiAgICAgICAgICAgICAgICAgICAgPGJyIC8+CiAgICAgICAgICAgICAgICAgICAgPHN1Yj48Yj5UaGVWYWFuPC9iPjwvc3ViPgogICAgICAgICAgICAgICAgPC9hPgogICAgICAgICAgICA8L3RkPgogICAgICAgICAgICA8dGQgYWxpZ249ImNlbnRlciI+CiAgICAgICAgICAgICAgICA8YSBocmVmPSJodHRwczovL2dpdGh1Yi5jb20vam9uYXRhdyI+CiAgICAgICAgICAgICAgICAgICAgPGltZyBzcmM9Imh0dHBzOi8vYXZhdGFycy5naXRodWJ1c2VyY29udGVudC5jb20vdS8yOTc3Mjc2Mz92PTQiIHdpZHRoPSIxMDA7IiBhbHQ9ImpvbmF0YXciLz4KICAgICAgICAgICAgICAgICAgICA8YnIgLz4KICAgICAgICAgICAgICAgICAgICA8c3ViPjxiPmpvbmF0YXc8L2I+PC9zdWI+CiAgICAgICAgICAgICAgICA8L2E+CiAgICAgICAgICAgIDwvdGQ+CiAgICAgICAgICAgIDx0ZCBhbGlnbj0iY2VudGVyIj4KICAgICAgICAgICAgICAgIDxhIGhyZWY9Imh0dHBzOi8vZ2l0aHViLmNvbS9JSEl1dGNoIj4KICAgICAgICAgICAgICAgICAgICA8aW1nIHNyYz0iaHR0cHM6Ly9hdmF0YXJzLmdpdGh1YnVzZXJjb250ZW50LmNvbS91LzIwODI1MDQ3P3Y9NCIgd2lkdGg9IjEwMDsiIGFsdD0iSUhJdXRjaCIvPgogICAgICAgICAgICAgICAgICAgIDxiciAvPgogICAgICAgICAgICAgICAgICAgIDxzdWI+PGI+SUhJdXRjaDwvYj48L3N1Yj4KICAgICAgICAgICAgICAgIDwvYT4KICAgICAgICAgICAgPC90ZD4KICAgICAgICAgICAgPHRkIGFsaWduPSJjZW50ZXIiPgogICAgICAgICAgICAgICAgPGEgaHJlZj0iaHR0cHM6Ly9naXRodWIuY29tL0tpQVJDIj4KICAgICAgICAgICAgICAgICAgICA8aW1nIHNyYz0iaHR0cHM6Ly9hdmF0YXJzLmdpdGh1YnVzZXJjb250ZW50LmNvbS91LzczODQ3NDg0P3Y9NCIgd2lkdGg9IjEwMDsiIGFsdD0iS2lBUkMiLz4KICAgICAgICAgICAgICAgICAgICA8YnIgLz4KICAgICAgICAgICAgICAgICAgICA8c3ViPjxiPktpQVJDPC9iPjwvc3ViPgogICAgICAgICAgICAgICAgPC9hPgogICAgICAgICAgICA8L3RkPgogICAgICAgICAgICA8dGQgYWxpZ249ImNlbnRlciI+CiAgICAgICAgICAgICAgICA8YSBocmVmPSJodHRwczovL2dpdGh1Yi5jb20va3lsbGlhbiI+CiAgICAgICAgICAgICAgICAgICAgPGltZyBzcmM9Imh0dHBzOi8vYXZhdGFycy5naXRodWJ1c2VyY29udGVudC5jb20vdS81ODMxMjMzP3Y9NCIgd2lkdGg9IjEwMDsiIGFsdD0ia3lsbGlhbiIvPgogICAgICAgICAgICAgICAgICAgIDxiciAvPgogICAgICAgICAgICAgICAgICAgIDxzdWI+PGI+a3lsbGlhbjwvYj48L3N1Yj4KICAgICAgICAgICAgICAgIDwvYT4KICAgICAgICAgICAgPC90ZD4KICAgICAgICAgICAgPHRkIGFsaWduPSJjZW50ZXIiPgogICAgICAgICAgICAgICAgPGEgaHJlZj0iaHR0cHM6Ly9naXRodWIuY29tL1NoYWRpZXN0R29hdCI+CiAgICAgICAgICAgICAgICAgICAgPGltZyBzcmM9Imh0dHBzOi8vYXZhdGFycy5naXRodWJ1c2VyY29udGVudC5jb20vdS80ODU5MDQ5Mj92PTQiIHdpZHRoPSIxMDA7IiBhbHQ9IlNoYWRpZXN0R29hdCIvPgogICAgICAgICAgICAgICAgICAgIDxiciAvPgogICAgICAgICAgICAgICAgICAgIDxzdWI+PGI+U2hhZGllc3RHb2F0PC9iPjwvc3ViPgogICAgICAgICAgICAgICAgPC9hPgogICAgICAgICAgICA8L3RkPgoJCTwvdHI+CgkJPHRyPgogICAgICAgICAgICA8dGQgYWxpZ249ImNlbnRlciI+CiAgICAgICAgICAgICAgICA8YSBocmVmPSJodHRwczovL2dpdGh1Yi5jb20vTWFyaW9HSyI+CiAgICAgICAgICAgICAgICAgICAgPGltZyBzcmM9Imh0dHBzOi8vYXZhdGFycy5naXRodWJ1c2VyY29udGVudC5jb20vdS84Mzc5MDc5P3Y9NCIgd2lkdGg9IjEwMDsiIGFsdD0iTWFyaW9HSyIvPgogICAgICAgICAgICAgICAgICAgIDxiciAvPgogICAgICAgICAgICAgICAgICAgIDxzdWI+PGI+TWFyaW9HSzwvYj48L3N1Yj4KICAgICAgICAgICAgICAgIDwvYT4KICAgICAgICAgICAgPC90ZD4KCQk8L3RyPgoJPHRib2R5Pgo8L3RhYmxlPgo8IS0tIHJlYWRtZTogY29sbGFib3JhdG9ycyxjb250cmlidXRvcnMgLWVuZCAtLT4K
+ readmeEtag: '"7b323c14ab5e17cd082932b9c8d9781fff87f94a"'
+ readmeLastModified: Thu, 22 Aug 2024 17:38:25 GMT
repositoryId: 679280065
description: Beautiful API references from OpenAPI/Swagger files ✨
created: '2023-08-16T13:42:32Z'
- updated: '2024-08-21T23:25:04Z'
+ updated: '2024-08-23T02:02:32Z'
language: TypeScript
archived: false
- stars: 5466
+ stars: 5477
watchers: 19
forks: 162
owner: scalar
logo: https://avatars.githubusercontent.com/u/301879?v=4
license: MIT
- repoEtag: '"3ad1d52230daad179079db87719d2917648242478637d934452db7248d4a6c91"'
- repoLastModified: Wed, 21 Aug 2024 23:25:04 GMT
+ repoEtag: '"4465747a82eee7477c67b0fd2dad2955de2e82741dacb10c088434c68007e40c"'
+ repoLastModified: Fri, 23 Aug 2024 02:02:32 GMT
foundInMaster: true
- source: https://openapi.tools/
name: Scribe
@@ -331,7 +331,7 @@
owner: knuckleswtf
logo: https://avatars.githubusercontent.com/u/63367037?v=4
license: MIT
- repoEtag: '"b95dc78fce13cbe569174cf0d0eb4d369e3dbf437b9f4bda5a59ad5bdab2b7e3"'
+ repoEtag: '"72c1a474092aa4dbd12ed88101b1bd862f03d420c09614180211c2dadd0fd4f3"'
repoLastModified: Tue, 20 Aug 2024 17:49:29 GMT
foundInMaster: true
- source: https://openapi.tools/
@@ -379,17 +379,17 @@
repositoryId: 45250726
description: 📘 OpenAPI/Swagger-generated API Reference Documentation
created: '2015-10-30T12:53:02Z'
- updated: '2024-08-22T01:27:04Z'
+ updated: '2024-08-23T03:18:45Z'
language: TypeScript
archived: false
- stars: 23176
+ stars: 23182
watchers: 294
forks: 2280
owner: Redocly
logo: https://avatars.githubusercontent.com/u/32099856?v=4
license: MIT
- repoEtag: '"00fd7f309506da74e22119b14811a015015535cb6138182a4716ba94f5c38aa1"'
- repoLastModified: Thu, 22 Aug 2024 01:27:04 GMT
+ repoEtag: '"beafb2953ab8a05bb2d1e02ca904e2027d8e377cece1a83c77858f209f94496a"'
+ repoLastModified: Fri, 23 Aug 2024 03:18:45 GMT
foundInMaster: true
- source: https://openapi.tools/
name: RestCase Docs
@@ -451,17 +451,17 @@
also simplified postman tool. 基于 OpenAPI/Swagger
规范的接口文档,快速模拟请求参数并调用接口,也是简化版 postman 工具
created: '2023-12-20T14:51:12Z'
- updated: '2024-08-22T01:58:56Z'
+ updated: '2024-08-22T11:36:36Z'
language: TypeScript
archived: false
- stars: 601
+ stars: 603
watchers: 2
forks: 58
owner: rookie-luochao
logo: https://avatars.githubusercontent.com/u/22948077?v=4
license: MIT
- repoEtag: '"0a87723c28c16765b970139aee239037d2dd59bb10ba60169a90eff17b4a0cf1"'
- repoLastModified: Thu, 22 Aug 2024 01:58:56 GMT
+ repoEtag: '"c30f35b81ea31b9f518afdaa9d3f400cac2d1fc23f1b1a3db6e5be02c71812ce"'
+ repoLastModified: Thu, 22 Aug 2024 11:36:36 GMT
category:
- Documentation
- Server Implementations
@@ -497,7 +497,7 @@
owner: Tufin
logo: https://avatars.githubusercontent.com/u/5352131?v=4
license: Apache-2.0
- repoEtag: '"f67e654bf67a0934d8c0d91cfe101f2620240bdd63ac56261ebe6b51a50d8f5f"'
+ repoEtag: '"d9a4b829fdaf13f4e54e23adbce495c6b377ab1bcc2ad8f72a4bdf35543f231d"'
repoLastModified: Wed, 21 Aug 2024 13:31:01 GMT
foundInMaster: true
name: oasdiff
@@ -546,17 +546,17 @@
changes, publish accurate documentation and improve the design of your
APIs.
created: '2018-03-02T17:02:50Z'
- updated: '2024-08-20T09:01:35Z'
+ updated: '2024-08-22T15:57:14Z'
language: TypeScript
archived: false
- stars: 1336
+ stars: 1337
watchers: 11
forks: 74
owner: opticdev
logo: https://avatars.githubusercontent.com/u/34556970?v=4
license: MIT
- repoEtag: '"dd4d6858c55d840718502886af4a06c07e2301391eac60f5a69e8dc0230ed668"'
- repoLastModified: Tue, 20 Aug 2024 09:01:35 GMT
+ repoEtag: '"6159fba93e36d8574c7338f492a5d6a0cbfe1b710b012d5c1e54b97b96ebb8f5"'
+ repoLastModified: Thu, 22 Aug 2024 15:57:14 GMT
foundInMaster: true
id: 8c3d08406ca659662808d51ddc10b4e4
v3_1: true
@@ -1011,17 +1011,17 @@
generation), server stubs, documentation and configuration automatically
given an OpenAPI Spec (v2, v3)
created: '2018-05-12T09:57:56Z'
- updated: '2024-08-22T03:25:53Z'
+ updated: '2024-08-23T02:12:29Z'
language: Java
archived: false
- stars: 21078
- watchers: 220
- forks: 6390
+ stars: 21096
+ watchers: 219
+ forks: 6393
owner: OpenAPITools
logo: https://avatars.githubusercontent.com/u/37325267?v=4
license: Apache-2.0
- repoEtag: '"7b4c92e055ec4b201078a9835599141af0f28f9361d3648fcfbe14ea083c6feb"'
- repoLastModified: Thu, 22 Aug 2024 03:25:53 GMT
+ repoEtag: '"298b107ec0265ba9f732e7aaac4d5a60064e2d3d445313335e85e8c979824afa"'
+ repoLastModified: Fri, 23 Aug 2024 02:12:29 GMT
foundInMaster: true
id: 0418f8afcd0196c648d1a46c0c5c20d1
v3_1_link: https://github.com/OpenAPITools/openapi-generator/issues/9083
@@ -1095,17 +1095,17 @@
repositoryId: 323665366
description: OpenAPI based HTTP Client code generator
created: '2020-12-22T15:35:49Z'
- updated: '2024-08-22T03:20:02Z'
+ updated: '2024-08-23T02:01:41Z'
language: C#
archived: false
- stars: 2757
+ stars: 2765
watchers: 44
- forks: 185
+ forks: 186
owner: microsoft
logo: https://avatars.githubusercontent.com/u/6154722?v=4
license: MIT
- repoEtag: '"3c97ff1833bc4ac5938fee507065862cdbc457d0998ddd42ea4d11619575537b"'
- repoLastModified: Thu, 22 Aug 2024 03:20:02 GMT
+ repoEtag: '"85757f939dd964148e9e832ffff20778cc2fdef68dc0d54ea60e8d40163f0e98"'
+ repoLastModified: Fri, 23 Aug 2024 02:01:41 GMT
foundInMaster: true
- source: https://openapi.tools/
name: FabriKt
@@ -1142,7 +1142,7 @@
owner: cjbooms
logo: https://avatars.githubusercontent.com/u/868640?v=4
license: Apache-2.0
- repoEtag: '"0331ef85976a662b984e795d67962add95a9a297fff78a9c7226a9789d5caea4"'
+ repoEtag: '"deca5e8e05f79f381176a141c59c73a91883cec774b98d48c6259c2569e25423"'
repoLastModified: Tue, 13 Aug 2024 10:11:21 GMT
foundInMaster: true
- source:
@@ -1335,17 +1335,17 @@
repositoryId: 19390712
description: Swagger Editor
created: '2014-05-02T22:47:10Z'
- updated: '2024-08-21T18:06:47Z'
+ updated: '2024-08-22T15:25:11Z'
language: JavaScript
archived: false
- stars: 8832
+ stars: 8833
watchers: 258
forks: 2235
owner: swagger-api
logo: https://avatars.githubusercontent.com/u/7658037?v=4
license: Apache-2.0
- repoEtag: '"9529c99919a9849ef4464675bfa7ab47c2fe8d98666983480d7b1cac848c11c1"'
- repoLastModified: Wed, 21 Aug 2024 18:06:47 GMT
+ repoEtag: '"68781b88a40d744433838accda6fe00f97107999f85abb4501c2b566fc39e869"'
+ repoLastModified: Thu, 22 Aug 2024 15:25:11 GMT
foundInMaster: true
id: 951cf61d12c812ef9b201ad76b5d278d
v3_1: true
@@ -1489,7 +1489,7 @@
repositoryId: 69595482
description: Open Source API Design
created: '2016-09-29T18:22:33Z'
- updated: '2024-08-21T05:46:47Z'
+ updated: '2024-08-22T13:40:51Z'
language: TypeScript
archived: false
stars: 973
@@ -1498,8 +1498,8 @@
owner: Apicurio
logo: https://avatars.githubusercontent.com/u/28107283?v=4
license: Apache-2.0
- repoEtag: '"8b2b728a5f34feab6b3cffab5cf52a456f2db8ccfcb7ee372a58d84cad9e7bb7"'
- repoLastModified: Wed, 21 Aug 2024 05:46:47 GMT
+ repoEtag: '"a008fb1c4433c1bbe09633409e0655b7788b89aa5da08e403d4395e5135b5431"'
+ repoLastModified: Thu, 22 Aug 2024 13:40:51 GMT
foundInMaster: true
homepage: https://github.com/Apicurio/apicurio-studio
id: efe9656e80c1bf6304903ca5a60fe5a6
@@ -1705,17 +1705,17 @@
Turn any OpenAPI2/3 and Postman Collection file into an API server with
mocking, transformations and validations.
created: '2016-03-18T03:52:09Z'
- updated: '2024-08-21T23:55:59Z'
+ updated: '2024-08-23T00:18:23Z'
language: TypeScript
archived: false
- stars: 4185
- watchers: 54
+ stars: 4191
+ watchers: 55
forks: 343
owner: stoplightio
logo: https://avatars.githubusercontent.com/u/10767217?v=4
license: Apache-2.0
- repoEtag: '"507b9572c54b1cede2096cbf18a37427c545cf31ef47ba8234f942820959e9b6"'
- repoLastModified: Wed, 21 Aug 2024 23:55:59 GMT
+ repoEtag: '"0571b617dc914ecee04ac7f4cf6eb016757bb36a55b10961f81871aed5df9817"'
+ repoLastModified: Fri, 23 Aug 2024 00:18:23 GMT
foundInMaster: true
useMasterProperties: true
id: 15aad8cd322242e03733b07f2a37890a
@@ -1748,17 +1748,17 @@
The open source, cloud native tool for API Mocking and Testing. Microcks
is a Cloud Native Computing Foundation sandbox project 🚀
created: '2015-02-23T15:46:09Z'
- updated: '2024-08-21T13:22:09Z'
+ updated: '2024-08-22T13:53:49Z'
language: Java
archived: false
- stars: 1315
+ stars: 1317
watchers: 22
forks: 208
owner: microcks
logo: https://avatars.githubusercontent.com/u/11051048?v=4
license: Apache-2.0
- repoEtag: '"5fd6e9ed04841db48357a852577835d63c54700c2dd852cd3bfb8e31936916c2"'
- repoLastModified: Wed, 21 Aug 2024 13:22:09 GMT
+ repoEtag: '"1b600cdf03a6f54cb973ccc563a3225c2e1da554efd9cdbce33d54baf3bd7591"'
+ repoLastModified: Thu, 22 Aug 2024 13:53:49 GMT
foundInMaster: true
id: 1c0e918b5a733b0f1726199e3ea101d6
- source: https://openapi.tools/
@@ -1848,7 +1848,7 @@
owner: JustinFeng
logo: https://avatars.githubusercontent.com/u/1527902?v=4
license: MIT
- repoEtag: '"ede815b9cae0a2333c534b97d0d3bef96e6402cd90334446f2c3c53ec34b52b8"'
+ repoEtag: '"0c24e9e965bdfd6cc217b2adc7589cfdda1bce6cf3634dc07c7d821fa7cc8358"'
repoLastModified: Wed, 21 Aug 2024 04:23:32 GMT
foundInMaster: true
id: 6b67af7dabca973abebd21b956d683e7
@@ -1927,7 +1927,7 @@
repositoryId: 61366800
description: Build OpenAPI-compliant REST APIs using TypeScript and Node
created: '2016-06-17T10:42:50Z'
- updated: '2024-08-20T14:16:09Z'
+ updated: '2024-08-22T10:44:08Z'
language: TypeScript
archived: false
stars: 3415
@@ -1936,8 +1936,8 @@
owner: lukeautry
logo: https://avatars.githubusercontent.com/u/8770560?v=4
license: MIT
- repoEtag: '"28e79f7a1729b7ae0bb755a1ab495f4aadef667a586bccb610ff5e24961a54fd"'
- repoLastModified: Tue, 20 Aug 2024 14:16:09 GMT
+ repoEtag: '"61bee3a5b567275d90776f358b58f0d1f86b99f2d2fb59a118410fb328604db6"'
+ repoLastModified: Thu, 22 Aug 2024 10:44:08 GMT
foundInMaster: true
id: 2529db76d3d9f042b0c624f65b13fc41
- source: https://openapi.tools/
@@ -2172,17 +2172,17 @@
repositoryId: 39904377
description: Open source API management platform
created: '2015-07-29T16:34:52Z'
- updated: '2024-08-20T15:08:19Z'
+ updated: '2024-08-22T19:48:34Z'
language: PHP
archived: false
stars: 1833
watchers: 58
- forks: 218
+ forks: 217
owner: apioo
logo: https://avatars.githubusercontent.com/u/18172950?v=4
license: Apache-2.0
- repoEtag: '"6be5c69bc8ecb9628309dee511b70190414610ee5565d50ea00080fbf6bca3ee"'
- repoLastModified: Tue, 20 Aug 2024 15:08:19 GMT
+ repoEtag: '"5554f62c40c43f02fba929eac636d4afb96763be01c073af80b6bb5d85857b6f"'
+ repoLastModified: Thu, 22 Aug 2024 19:48:34 GMT
foundInMaster: true
id: 5458da680012a142d20e79ac150bc4ab
- source:
@@ -2288,17 +2288,17 @@
repositoryId: 105440153
description: 'OpenAPI (Swagger) module for Nest framework (node.js) :earth_americas:'
created: '2017-10-01T12:20:24Z'
- updated: '2024-08-21T09:03:15Z'
+ updated: '2024-08-22T05:11:50Z'
language: TypeScript
archived: false
- stars: 1658
+ stars: 1659
watchers: 31
forks: 458
owner: nestjs
logo: https://avatars.githubusercontent.com/u/28507035?v=4
license: MIT
- repoEtag: '"bebc55409df1414121f59d8599710fd025d5ce71cc743b862cfc40b9d2aabcac"'
- repoLastModified: Wed, 21 Aug 2024 09:03:15 GMT
+ repoEtag: '"ba2cf8111586b4189672959ea6a2873d95c50857eff227cfbc5231d87c1c1ce2"'
+ repoLastModified: Thu, 22 Aug 2024 05:11:50 GMT
foundInMaster: true
id: 7071babd9853fc901c5decfa9b465b67
- source:
@@ -2461,15 +2461,15 @@
v3: true
repositoryMetadata:
base64Readme: >-
- IVtwb3J0bWFuLWhlcm9dKGh0dHBzOi8vdXNlci1pbWFnZXMuZ2l0aHVidXNlcmNvbnRlbnQuY29tLzExMTIxMjkvMTI1ODMzNTEyLWMzMjM1OWQ4LWFmMjctNDk1Yi04MjExLTc0NGM1MDQxNDZiMi5wbmcpCgo8cCBhbGlnbj0iY2VudGVyIj4KICA8YSBocmVmPSJodHRwczovL3d3dy5ucG1qcy5jb20vcGFja2FnZS9AYXBpZGVjay9wb3J0bWFuIj48aW1nIHNyYz0iaHR0cHM6Ly9pbWcuc2hpZWxkcy5pby9ucG0vdi9AYXBpZGVjay9wb3J0bWFuLnN2ZyIgYWx0PSJUb3RhbCBEb3dubG9hZHMiPjwvYT4KICA8YSBocmVmPSJodHRwczovL3d3dy5ucG1qcy5jb20vcGFja2FnZS9AYXBpZGVjay9wb3J0bWFuIj48aW1nIHNyYz0iaHR0cHM6Ly9pbWcuc2hpZWxkcy5pby9ucG0vZHcvQGFwaWRlY2svcG9ydG1hbi5zdmciIGFsdD0iTGF0ZXN0IFN0YWJsZSBWZXJzaW9uIj48L2E+CjwvcD4KCiMgUG9ydG1hbiDwn5Go8J+PveKAjfCfmoAKClBvcnQgT3BlbkFQSSBTcGVjIHRvIFBvc3RtYW4gQ29sbGVjdGlvbiwgd2l0aCBjb250cmFjdCAmIHZhcmlhdGlvbiB0ZXN0cyBpbmNsdWRlZCEKClBvcnRtYW4gbGV2ZXJhZ2VzIE9wZW5BUEkgZG9jdW1lbnRzLCB3aXRoIGFsbCBpdHMgZGVmaW5lZCBBUEkgcmVxdWVzdC9yZXNwb25zZSBwcm9wZXJ0aWVzLCB0byBwb3dlciB5b3VyIFBvc3RtYW4gY29sbGVjdGlvbi4KTGV0IFBvcnRtYW4gZG8gYWxsIHRoZSB3b3JrIGFuZCBpbmplY3QgY29udHJhY3QgJiB2YXJpYXRpb24gdGVzdHMgd2l0aCBhIG1pbmltdW0gb2YgY29uZmlndXJhdGlvbi4KQ3VzdG9taXplIHRoZSBQb3N0bWFuIHJlcXVlc3RzICYgdmFyaWFibGVzIHdpdGggYSB3aWRlIHJhbmdlIG9mIG9wdGlvbnMgdG8gYXNzaWduICYgb3ZlcndyaXRlIHZhcmlhYmxlcy4KCj4gWyFJTVBPUlRBTlRdICAKPiAqKkltcG9ydGFudCBDaGFuZ2U6KiogSWYgeW91IGFyZSB1c2luZyB2ZXJzaW9uIDEuMjguMCB3aXRoIGEgY3VzdG9tIFBvc3RtYW4gY29uZmlnIGZpbGUgc3BlY2lmaWVkIGJ5IHRoZSBgLS1wb3N0bWFuQ29uZmlnRmlsZWAgZmxhZywgcGxlYXNlIGVuc3VyZSB0aGF0IHRoZSBgcGFyYW1ldGVyc1Jlc29sdXRpb25gIG9wdGlvbiBpcyBzZXQgdG8gZWl0aGVyICJFeGFtcGxlIiBvciAiU2NoZW1hIi4gVGhlIG9wdGlvbnMgYHJlcXVlc3RQYXJhbWV0ZXJzUmVzb2x1dGlvbmAgYW5kIGBleGFtcGxlUGFyYW1ldGVyc1Jlc29sdXRpb25gIGFyZSBkZXByZWNhdGVkIG9wZW5hcGktdG8tcG9zdG1hbiBvcHRpb25zLgoKIyMgV2h5IHVzZSBQb3J0bWFuPwoKQ29udmVydCB5b3VyIE9wZW5BUEkgc3BlYyB0byBQb3N0bWFuLCBnZW5lcmF0ZSBjb250cmFjdCAmIHZhcmlhdGlvbiB0ZXN0cywgdXBsb2FkIHRoZSBQb3N0bWFuIGNvbGxlY3Rpb24gJiBydW4gdGhlIHRlc3RzIHRocm91Z2ggTmV3bWFuLgpJbmNsdWRlIHRoZSBQb3J0bWFuIENMSSBhcyBwYXJ0IG9mIGFuIGF1dG9tYXRlZCBwcm9jZXNzIGZvciBpbmplY3RpbmcgdGhlIHBvd2VyIG9mIFBvcnRtYW4gZGlyZWN0bHkgaW50byB5b3VyIENJL0NEIHBpcGVsaW5lLgoKW1JlYWQgdGhlIGZ1bGwgYmxvZyBwb3N0XShodHRwczovL2Jsb2cuYXBpZGVjay5jb20vYW5ub3VuY2luZy1wb3J0bWFuKQoKIyMgRmVhdHVyZXMKCldpdGggUG9ydG1hbiwgeW91IGNhbjoKCi0gW3hdIENvbnZlcnQgYW4gT3BlbkFQSSBkb2N1bWVudCB0byBhIFBvc3RtYW4gY29sbGVjdGlvbgogIC0gW3hdIFN1cHBvcnQgZm9yIE9wZW5BUEkgMy4wCiAgLSBbeF0gU3VwcG9ydCBmb3IgT3BlbkFQSSAzLjEgKGJldGEpCi0gRXh0ZW5kIHRoZSBQb3N0bWFuIGNvbGxlY3Rpb24gd2l0aCBjYXBhYmlsaXRpZXMKICAtIFt4XSBJbmplY3QgUG9zdG1hbiBDb250cmFjdCBUZXN0cyAtIFtsZWFybiBtb3JlXSguL2V4YW1wbGVzL3Rlc3RzdWl0ZS1jb250cmFjdC10ZXN0cy9yZWFkbWUubWQpCiAgLSBbeF0gQXNzaWduIGNvbGxlY3Rpb24gdmFyaWFibGVzIC0gW2xlYXJuIG1vcmVdKC4vZXhhbXBsZXMvdGVzdHN1aXRlLWFzc2lnbi12YXJpYWJsZXMvcmVhZG1lLm1kKQogIC0gW3hdIEluamVjdCBQb3N0bWFuIFZhcmlhdGlvbiBUZXN0cyAtIFtsZWFybiBtb3JlXSguL2V4YW1wbGVzL3Rlc3RzdWl0ZS12YXJpYXRpb24tdGVzdHMvcmVhZG1lLm1kKQogIC0gW3hdIEluamVjdCBQb3N0bWFuIEludGVncmF0aW9uIFRlc3RzCiAgLSBbeF0gSW5qZWN0IFBvc3RtYW4gd2l0aCBQcmUtcmVxdWVzdCAmIFRlc3RzIHNjcmlwdHMgb24gYSBjb2xsZWN0aW9uIG9yIG9wZXJhdGlvbiBsZXZlbCAtIFtsZWFybiBtb3JlXSguL2V4YW1wbGVzL3Rlc3RzdWl0ZS1wcmUtcmVxdWVzdC1zY3JpcHRzL3JlYWRtZS5tZCkKICAtIFt4XSBNb2RpZnkgUG9zdG1hbiByZXF1ZXN0cyAtIGxlYXJuIG1vcmUgW2hlcmVdKC4vZXhhbXBsZXMvdGVzdHN1aXRlLW92ZXJ3cml0ZXMvcmVhZG1lLm1kKSBhbmQgW2hlcmVdKC4vZXhhbXBsZXMvdGVzdHN1aXRlLWFzc2lnbi1vdmVyd3JpdGUvcmVhZG1lLm1kKQogIC0gW3hdIEZ1enogUG9zdG1hbiByZXF1ZXN0cyAtIFtsZWFybiBtb3JlXSguL2V4YW1wbGVzL3Rlc3RzdWl0ZS1mdXp6aW5nLXRlc3RzL3JlYWRtZS5tZCkKLSBbeF0gVXBsb2FkIHRoZSBQb3N0bWFuIGNvbGxlY3Rpb24gdG8geW91ciBQb3N0bWFuIGFwcCAtIFtsZWFybiBtb3JlXSgjY29uZmlndXJlLWF1dG9tYXRpYy11cGxvYWQtdG8tcG9zdG1hbi1hcHApCi0gW3hdIFRlc3QgdGhlIFBvc3RtYW4gY29sbGVjdGlvbiB3aXRoIE5ld21hbiAtIFtsZWFybiBtb3JlXSgjcnVuLW5ld21hbi13aXRoLW5ld21hbi1vcHRpb25zKQotIFt4XSBTcGxpdCB0aGUgY29uZmlndXJhdGlvbiBpbnRvIG11bHRpcGxlIGZpbGVzIHVzaW5nICRyZWYKLSBbeF0gTWFuYWdlIGV2ZXJ5dGhpbmcgaW4gY29uZmlnIGZpbGUgZm9yIGVhc3kgbG9jYWwgb3IgQ0kvQ0QgdXNhZ2UgLSBbbGVhcm4gbW9yZV0oI3Bhc3MtYWxsLWNsaS1vcHRpb25zLWFzLWpzb255YW1sLWZpbGUpCgojIyBHZXR0aW5nIHN0YXJ0ZWQKCjEuIFtJbnN0YWxsIFBvcnRtYW5dKCNpbnN0YWxsYXRpb24pCjIuIEluaXRpYWxpemUgUG9ydG1hbiBDTEkgY29uZmlndXJhdGlvbiBieSBydW5uaW5nOiBgJCBwb3J0bWFuIC0taW5pdGAKCk9SCgoxLiBbSW5zdGFsbCBQb3J0bWFuXSgjaW5zdGFsbGF0aW9uKQoyLiBDb3B5IGAuZW52LmV4YW1wbGVgIHRvIGAuZW52YCBhbmQgYWRkIGVudmlyb25tZW50IHZhcmlhYmxlcyB5b3UgbmVlZCBhdmFpbGFibGUgdG8geW91ciBjb2xsZWN0aW9uCjMuIENvcHkvcmVuYW1lIGFuZCBjdXN0b21pemUgZWFjaCBvZiB0aGUgXF9cX1xfXF8uZGVmYXVsdC5qc29uIGNvbmZpZyBmaWxlcyBpbiB0aGUgcm9vdCBkaXJlY3RvcnkgdG8gc3VpdCB5b3VyIG5lZWRzCjQuIFN0YXJ0IGNvbnZlcnRpbmcgeW91ciBPcGVuQVBJIGRvY3VtZW50IHRvIFBvc3RtYW4KCk9SCgpJZiB5b3UgaGF2ZSBhbiBleGlzdGluZyBPcGVuQVBJIHNwZWNpZmljYXRpb24sIHRyeSBydW5uaW5nIFBvcnRtYW4gd2l0aG91dCBhbnkgc3BlY2lhbCBzZXR1cCB0byBzZWUgaG93IGl0IGNhbiBnZW5lcmF0ZSBhIFBvc3RtYW4gY29sbGVjdGlvbiB3aXRoIGNvbnRyYWN0IHRlc3RzIHdpdGggaXQncyBkZWZhdWx0IGNvbmZpZ3VyYXRpb24uCgoxLiBbSW5zdGFsbCBQb3J0bWFuXSgjaW5zdGFsbGF0aW9uKQoyLiBSdW4gcG9ydG1hbiBvbiB5b3VyIE9wZW5BUEkgc3BlYywgaWU6IAotIGBucHggcG9ydG1hbiAtbCBteS1vcGVuYXBpLXNwZWMueWFtbGAgCi0gKGlmIHlvdXIgc3BlYyBpcyBob3N0ZWQgdXNlIHRoZSBgLXVgIHBhcmFtZXRlciwgaWU6CiAgLSBgbnB4IHBvcnRtYW4gLXUgaHR0cHM6Ly9wZXRzdG9yZTMuc3dhZ2dlci5pby9hcGkvdjMvb3BlbmFwaS5qc29uYAoKVGhpcyB3aWxsIGdlbmVyYXRlIGEgcG9zdG1hbiBjb2xsZWN0aW9uIHRoYXQgY29udGFpbnMgYSByZXF1ZXN0IGZvciBldmVyeSBtZXRob2Q6ZW5kcG9pbnQgY29tYmluYXRpb24gZGVmaW5lZCBpbiB5b3VyIHNwZWMsIGFuZCBpbmNsdWRlIGEgc2V0IG9mICJDb250cmFjdCBUZXN0cyIgZm9yIGVhY2ggb25lLiAgWW91IGNhbiBsZWFybiBtb3JlIGFib3V0IGNvbnRyYWN0IHRlc3RzLCBhbmQgaG93IHRvIGV4YW1pbmUgdGhlIGdlbmVyYXRlZCBjb2xsZWN0aW9uIFtoZXJlXSguL2V4YW1wbGVzL3Rlc3RzdWl0ZS1jb250cmFjdC10ZXN0cy9yZWFkbWUubWQpLgoKKFJ1bm5pbmcgcG9ydG1hbiB3aXRoIG5vIGV4cGxpY2l0IGNvbmZpZ3VyYXRpb24gaXMgdGhlIHNhbWUgYXMgcnVubmluZyBpdCB3aXRoIFt0aGlzIGNvbmZpZ3VyYXRpb24gZmlsZV0oLi9leGFtcGxlcy90ZXN0c3VpdGUtY29udHJhY3QtdGVzdHMvZGVmYXVsdC1wb3J0bWFuLWNvbmZpZy5qc29uKSkKCkFsbCBjb25maWd1cmF0aW9uIG9wdGlvbnMgdG8gY29udmVydCBmcm9tIE9wZW5BUEkgdG8gUG9zdG1hbiBjYW4gYmUgZm91bmQgaW4gdGhlIFtvcGVuYXBpLXRvLXBvc3RtYW5dKGh0dHBzOi8vZ2l0aHViLmNvbS9wb3N0bWFubGFicy9vcGVuYXBpLXRvLXBvc3RtYW4vYmxvYi9kZXZlbG9wL09QVElPTlMubWQpIHBhY2thZ2UgZG9jdW1lbnRhdGlvbi4KQWxsIGNvbmZpZ3VyYXRpb24gb3B0aW9ucyB0byBmaWx0ZXIgZmxhZ3MvdGFncy9tZXRob2RzL29wZXJhdGlvbnMvLi4uIGZyb20gT3BlbkFQSSBjYW4gYmUgZm91bmQgaW4gdGhlIFtvcGVuYXBpLWZvcm1hdF0oaHR0cHM6Ly9naXRodWIuY29tL3RoaW04MS9vcGVuYXBpLWZvcm1hdCNvcGVuYXBpLWZpbHRlci1vcHRpb25zKSBwYWNrYWdlIGRvY3VtZW50YXRpb24gb3IgdXNpbmcgdGhlIG9ubGluZSBbb3BlbmFwaS1mb3JtYXQgcGxheWdyb3VuZF0oaHR0cHM6Ly9vcGVuYXBpLWZvcm1hdC1wbGF5Z3JvdW5kLnZlcmNlbC5hcHAvKS4KCiMjIEluc3RhbGxhdGlvbgoKIyMjIExvY2FsIEluc3RhbGxhdGlvbiAocmVjb21tZW5kZWQpCgpZb3UgY2FuIGFkZCB0aGUgUG9ydG1hbiBDTEkgdG8gdGhlIGBub2RlX21vZHVsZXNgIGJ5IHVzaW5nOgoKYGBgc2hlbGwKJCBucG0gaW5zdGFsbCAtLXNhdmUgQGFwaWRlY2svcG9ydG1hbgpgYGAKCm9yIHVzaW5nIHlhcm46CgpgYGBzaGVsbAokIHlhcm4gYWRkIEBhcGlkZWNrL3BvcnRtYW4KYGBgCgpOb3RlIHRoYXQgdGhpcyB3aWxsIHJlcXVpcmUgeW91IHRvIHJ1biB0aGUgUG9ydG1hbiBDTEkgd2l0aCBgbnB4IEBhcGlkZWNrL3BvcnRtYW4gLWwgeW91ci1vcGVuYXBpLWZpbGUueWFtbGAgb3IsIGlmCnlvdSBhcmUgdXNpbmcgYW4gb2xkZXIgdmVyc2lvbiBvZiBucG0sIGAuL25vZGVfbW9kdWxlcy8uYmluL3BvcnRtYW4gLWwgeW91ci1vcGVuYXBpLWZpbGUueWFtbGAuCgojIyMgR2xvYmFsIEluc3RhbGxhdGlvbgoKYGBgc2hlbGwKJCBucG0gaW5zdGFsbCAtZyBAYXBpZGVjay9wb3J0bWFuCmBgYAoKIyMjIE5QWCB1c2FnZQoKVG8gZXhlY3V0ZSB0aGUgQ0xJIHdpdGhvdXQgaW5zdGFsbGluZyBpdCB2aWEgbnBtLCB1c2UgdGhlIG5weCBtZXRob2QuCgpgYGBzaGVsbAokIG5weCBAYXBpZGVjay9wb3J0bWFuIC1sIHlvdXItb3BlbmFwaS1maWxlLnlhbWwKYGBgCgojIyBDTEkgVXNhZ2UKCmBgYApVc2FnZTogLXUgPHVybD4gLWwgPGxvY2FsPiAtYiA8YmFzZVVybD4gLXQgPGluY2x1ZGVUZXN0cz4KCk9wdGlvbnM6CiAtLWhlbHAgICAgICAgICAgICAgICAgICAgICBTaG93IGhlbHAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbYm9vbGVhbl0KIC0tdmVyc2lvbiAgICAgICAgICAgICAgICAgIFNob3cgdmVyc2lvbiBudW1iZXIgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtib29sZWFuXQogLS11cmwsLXUgICAgICAgICAgICAgICAgICAgVVJMIG9mIE9BUyB0byBwb3J0IHRvIFBvc3RtYW4gY29sbGVjdGlvbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW3N0cmluZ10KIC0tbG9jYWwsIC1sICAgICAgICAgICAgICAgIFVzZSBsb2NhbCBPQVMgdG8gcG9ydCB0byBQb3N0bWFuIGNvbGxlY3Rpb24gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtzdHJpbmddCiAtLWJhc2VVcmwsIC1iICAgICAgICAgICAgICBPdmVycmlkZSBzcGVjIGJhc2VVcmwgdG8gdXNlIGluIFBvc3RtYW4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbc3RyaW5nXQogLS1vdXRwdXQsIC1vICAgICAgICAgICAgICAgV3JpdGUgdGhlIFBvc3RtYW4gY29sbGVjdGlvbiB0byBhbiBvdXRwdXQgZmlsZSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW3N0cmluZ10KIC0tb2FPdXRwdXQgICAgICAgICAgICAgICAgIFdyaXRlIHRoZSAoZmlsdGVyZWQpIE9wZW5BUEkgZmlsZSB0byBhbiBvdXRwdXQgZmlsZSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtzdHJpbmddCiAtLXJ1bk5ld21hbiwgLW4gICAgICAgICAgICBSdW4gTmV3bWFuIG9uIG5ld2x5IGNyZWF0ZWQgY29sbGVjdGlvbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbYm9vbGVhbl0KIC0tbmV3bWFuUnVuT3B0aW9ucyAgICAgICAgIEpTT04gc3RyaW5naWZpZWQgb2JqZWN0IHRvIHBhc3Mgb3B0aW9ucyBmb3IgY29uZmlndXJpbmcgTmV3bWFuICAgICAgICAgICAgICAgICAgIFtzdHJpbmddCiAtLW5ld21hbk9wdGlvbnNGaWxlICAgICAgICBQYXRoL1VSTCB0byBOZXdtYW4gb3B0aW9ucyBmaWxlIHRvIHBhc3Mgb3B0aW9ucyBmb3IgY29uZmlndXJpbmcgTmV3bWFuICAgICAgICAgICBbc3RyaW5nXQogLS1uZXdtYW5JdGVyYXRpb25EYXRhLCAtZCAgSXRlcmF0aW9uIGRhdGEgdG8gcnVuIE5ld21hbiB3aXRoIG5ld2x5IGNyZWF0ZWQgY29sbGVjdGlvbiAgICAgICAgICAgICAgICAgICAgICAgW3N0cmluZ10KIC0tbG9jYWxQb3N0bWFuICAgICAgICAgICAgIFVzZSBsb2NhbCBQb3N0bWFuIGNvbGxlY3Rpb24sIHNraXBzIE9wZW5BUEkgY29udmVyc2lvbiAgICAgICAgICAgICAgICAgICAgICAgICAgIFtzdHJpbmddCiAtLXN5bmNQb3N0bWFuICAgICAgICAgICAgICBVcGxvYWQgZ2VuZXJhdGVkIGNvbGxlY3Rpb24gdG8gUG9zdG1hbiAoZGVmYXVsdDogZmFsc2UpICAgICAgICAgICAgICAgICAgICAgICAgICBbYm9vbGVhbl0KIC0tc3luY1Bvc3RtYW5Db2xsZWN0aW9uSWRzIFN5bmNocm9uaXNlcyB0aGUgSURzIG9mIG5ld2x5IGNyZWF0ZWQgcG9zdG1hbiBjb2xsZWN0aW9ucyB3aXRoIHRob3NlIGFscmVhZHkKICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9uIFBvc3RtYW4sIHVzZWZ1bCB3aGVuIHlvdSB3YW50IHRvIHVzZSBQb3N0bWFuIHB1bGwgcmVxdWVzdCAoZGVmYXVsdDogZmFsc2UpICAgIFtib29sZWFuXQogLS1wb3N0bWFuRmFzdFN5bmMgICAgICAgICAgUG9zdG1hbiBzeW5jIGNyZWF0ZXMgbmV3IGNvbGxlY3Rpb24gKG5ldyBVSUQpLGluc3RlYWQgb2YgdXBkYXRlIChkZWZhdWx0OiBmYWxzZSkgW2Jvb2xlYW5dCiAtLXBvc3RtYW5SZWZyZXNoQ2FjaGUgICAgICBQb3N0bWFuIHN5bmMgd2lsbCByZWZyZXNoIGFsbCBsb2NhbCBjYWNoZWQgUG9zdG1hbiBBUEkgZGF0YSAoZGVmYXVsdDogZmFsc2UpICAgICBbYm9vbGVhbl0KIC0tcG9zdG1hblVpZCwgLXAgICAgICAgICAgIFBvc3RtYW4gY29sbGVjdGlvbiBVSUQgdG8gdXBsb2FkIHdpdGggdGhlIGdlbmVyYXRlZCBQb3N0bWFuIGNvbGxlY3Rpb24gICAgICAgICAgIFtzdHJpbmddCiAtLXBvc3RtYW5Xb3Jrc3BhY2VOYW1lICAgICBQb3N0bWFuIFdvcmtzcGFjZSBuYW1lIHRvIHRhcmdldCB0aGUgdXBsb2FkIG9mIHRoZSBnZW5lcmF0ZWQgUG9zdG1hbiBjb2xsZWN0aW9uICBbc3RyaW5nXQogLS1pbmNsdWRlVGVzdHMsIC10ICAgICAgICAgSW5qZWN0IFBvcnRtYW4gdGVzdCBzdWl0ZSAoZGVmYXVsdDogdHJ1ZSkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2Jvb2xlYW5dCiAtLWJ1bmRsZUNvbnRyYWN0VGVzdHMgICAgICBCdW5kbGUgUG9ydG1hbiBjb250cmFjdCB0ZXN0cyBpbiBhIHNlcGFyYXRlIGZvbGRlciBpbiBQb3N0bWFuIChkZWZhdWx0OiBmYWxzZSkgICBbYm9vbGVhbl0KIC0tcG9ydG1hbkNvbmZpZ0ZpbGUsIC1jICAgIFBhdGgvVVJMIHRvIFBvcnRtYW4gc2V0dGluZ3MgY29uZmlnIGZpbGUgKHBvcnRtYW4tY29uZmlnLmpzb24pICAgICAgICAgICAgICAgICAgIFtzdHJpbmddCiAtLXBvc3RtYW5Db25maWdGaWxlLC1zICAgICBQYXRoIHRvIG9wZW5hcGktdG8tcG9zdG1hbiBjb25maWcgZmlsZSAocG9zdG1hbi1jb25maWcuanNvbikgICAgICAgICAgICAgICAgICAgICBbc3RyaW5nXQogLS1maWx0ZXJGaWxlICAgICAgICAgICAgICAgUGF0aC9VUkwgdG8gb3BlbmFwaS1mb3JtYXQgY29uZmlnIGZpbGUgKG9hcy1mb3JtYXQtZmlsdGVyLmpzb24pICAgICAgICAgICAgICAgICAgW3N0cmluZ10KIC0tZW52RmlsZSAgICAgICAgICAgICAgICAgIFBhdGggdG8gdGhlIC5lbnYgZmlsZSB0byBpbmplY3QgZW52aXJvbm1lbnQgdmFyaWFibGVzICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtzdHJpbmddCiAtLWNvbGxlY3Rpb25OYW1lICAgICAgICAgICBPdmVyd3JpdGUgT3BlbkFQSSB0aXRsZSB0byBzZXQgdGhlIFBvc3RtYW4gY29sbGVjdGlvbiBuYW1lICAgICAgICAgICAgICAgICAgICAgICBbc3RyaW5nXQogLS1jbGlPcHRpb25zRmlsZSAgICAgICAgICAgUGF0aC9VUkwgdG8gUG9ydG1hbiBDTEkgb3B0aW9ucyBmaWxlICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbc3RyaW5nXQogLS1pZ25vcmVDaXJjdWxhclJlZnMgICAgICAgSWdub3JlIGNpcmN1bGFyIHJlZmVyZW5jZXMgaW4gT3BlbkFQSSBzcGVjIChkZWZhdWx0OiBmYWxzZSkgICAgICAgICAgICAgICAgICAgICAgW2Jvb2xlYW5dCiAtLWxvZ0Fzc2lnblZhcmlhYmxlcyAgICAgICBUb2dnbGUgbG9nZ2luZyBvZiBhc3NpZ25lZCB2YXJpYWJsZXMgKGRlZmF1bHQ6IHRydWUpICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbYm9vbGVhbl0KIC0taW5pdCAgICAgICAgICAgICAgICAgICAgIENvbmZpZ3VyZSBQb3J0bWFuIENMSSBvcHRpb25zIGluIGFuIGludGVyYWN0aXZlIG1hbm5lciAgICAgICAgICAgICAgICAgICAgICAgICAgIFtzdHJpbmddCiAtLWV4dHJhVW5rbm93bkZvcm1hdHMgICAgICBBZGQgZXh0cmEgdW5rbm93biBmb3JtYXRzIHRvIGpzb24gc2NoZW1hIHRlc3RzICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbYXJyYXldCmBgYAoKIyMjIEVudmlyb25tZW50IHZhcmlhYmxlcyBhcyBQb3N0bWFuIHZhcmlhYmxlcwoKUG9ydG1hbiB1c2VzIGBkb3RlbnZgIHRvIG5vdCBvbmx5IGFjY2VzcyB2YXJpYWJsZXMgZm9yIGZ1bmN0aW9uYWxpdHksIGJ1dCB5b3UgY2FuIGFsc28gYWRkIGVudmlyb25tZW50IHZhcmlhYmxlcyB0aGF0IHlvdSdkIGxpa2UgZGVjbGFyZWQgd2l0aGluIHlvdXIgUG9zdG1hbiBlbnZpcm9ubWVudC4KU2ltcGx5IHByZWZpeCBhbnkgdmFyaWFibGUgbmFtZSB3aXRoIGBQT1JUTUFOX2AsIGFuZCBpdCB3aWxsIGJlIGF2YWlsYWJsZSBmb3IgdXNlIGluIHlvdXIgUG9zdG1hbiBjb2xsZWN0aW9uIGFzIHRoZSBjYW1lbC1jYXNlZCBlcXVpdmFsZW50LiBGb3IgZXhhbXBsZToKCmBgYApQT1JUTUFOX0NPTlNVTUVSX0lEPXRlc3RfdXNlcl9pZApgYGAKCndpbGwgYmUgYXZhaWxhYmxlIGluIHlvdXIgY29sbGVjdGlvbiBvciB0ZXN0cyBieSByZWZlcmVuY2luZzoKCmBgYAp7e2NvbnN1bWVySWR9fQpgYGAKCkl0IGlzIHBvc3NpYmxlIHRvIHNldCBhIHNwZWMtc3BlY2lmaWMgYC5lbnZgIGZpbGUsIHRoYXQgbGl2ZXMgbmV4dCB0byB5b3VyIGNvbmZpZyBmaWxlcy4gVGhlIHBhdGggY2FuIGJlIHBhc3NlZCBpbiB2aWEgYGVudkZpbGVgIGNsaSBvcHRpb24uClRoaXMgaXMgdXNlZnVsIGlmIHlvdSBoYXZlIFBvcnRtYW4gbWFuYWdpbmcgbXVsdGlwbGUgc3BlY3MgdGhhdCBoYXZlIHVuaXF1ZSBlbnZpcm9ubWVudCByZXF1aXJlbWVudHMuCgpCeSBkZWZhdWx0LCBQb3J0bWFuIHdpbGwgbGV2ZXJhZ2UgYW55IEVOVklST05NRU5UIHZhcmlhYmxlIHRoYXQgaXMgZGVmaW5lZCB0aGF0IHN0YXJ0cyB3aXRoIGBQT1JUTUFOX2AuCgpBbm90aGVyIG9wdGlvbiB0byBzZXQgdmFyaWFibGVzIGlzIGJ5IGNvbmZpZ3VyaW5nIHRoZW0gYXMgYGNvbGxlY3Rpb25WYXJpYWJsZXNgIGluIHRoZSBbZ2xvYmFscyBzZWN0aW9uXSgjcG9ydG1hbi0tLWdsb2JhbHMtcHJvcGVydHkpIG9mIHlvdXIgUG9ydG1hbiBjb25maWd1cmF0aW9uLgoKIyMjIENMSSBPcHRpb25zCgojIyMjIyMgSW5pdGlhbGl6ZSBQb3J0bWFuIENMSSBjb25maWd1cmF0aW9uCgpgYGAKcG9ydG1hbiAtLWluaXQKYGBgCgpUaGUgYGluaXRgIG9wdGlvbiB3aWxsIGhlbHAgeW91IHRvIGNvbmZpZ3VyZSB0aGUgY2xpQ29uZmlnIG9wdGlvbnMgYW5kIHB1dCB0aGUgZGVmYXVsdCBjb25maWcsIGVudiBmaWxlIGluIHBsYWNlIHRvIGtpY2stc3RhcnQgdGhlIHVzYWdlIG9mIFBvcnRtYW4uCgojIyMjIyMgUGFzcyBpbiB0aGUgcmVtb3RlbHkgaG9zdGVkIHNwZWMKCmBgYApwb3J0bWFuIC11IGh0dHBzOi8vc3BlY3MuYXBpZGVjay5jb20vY3JtLnltbApgYGAKCiMjIyMjIyBPdmVyd3JpdGUgdGhlIGJhc2VVcmwgaW4gc3BlYyBhbmQgcnVuIE5ld21hbgoKYGBgCnBvcnRtYW4gLXUgaHR0cHM6Ly9zcGVjcy5hcGlkZWNrLmNvbS9jcm0ueW1sIC1iIGh0dHA6Ly9sb2NhbGhvc3Q6MzA1MCAtbiB0cnVlCmBgYAoKIyMjIyMjIFBhdGggcGFzcyB0byBhIGxvY2FsIGRhdGEgZmlsZSBmb3IgTmV3bWFuIHRvIHVzZSBmb3IgaXRlcmF0aW9ucwoKYGBgCnBvcnRtYW4gLXUgaHR0cHM6Ly9zcGVjcy5hcGlkZWNrLmNvbS9jcm0ueW1sIC1iIGh0dHA6Ly9sb2NhbGhvc3Q6MzA1MCAtbiB0cnVlIC1kIC4vdG1wL25ld21hbi9kYXRhL2NybS5qc29uCmBgYAoKIyMjIyMjIFBhc3MgdGhlIHBhdGggdG8gYSBsb2NhbCBzcGVjICh1c2VmdWwgd2hlbiB1cGRhdGluZyB5b3VyIHNwZWNzKSBhbmQgb3V0cHV0IFBvc3RtYW4gY29sbGVjdGlvbiBsb2NhbGx5CgpgYGAKcG9ydG1hbiAtbCAuL3RtcC9zcGVjcy9jcm0ueW1sIC1vIC4vdG1wL3NwZWNzL2NybS5wb3N0bWFuLmpzb24KYGBgCgojIyMjIyMgU2tpcCB0ZXN0cyBhbmQganVzdCBnZW5lcmF0ZSBjb2xsZWN0aW9uCgpgYGAKcG9ydG1hbiAtbCAuL3RtcC9zcGVjcy9jcm0ueW1sIC10IGZhbHNlCmBgYAoKIyMjIyMjIEZpbHRlciBPcGVuQVBJIGFuZCBnZW5lcmF0ZSBjb2xsZWN0aW9uCgpgYGAKcG9ydG1hbiAtdSBodHRwczovL3NwZWNzLmFwaWRlY2suY29tL2NybS55bWwgLS1maWx0ZXJGaWxlIGV4YW1wbGVzL2NsaS1maWx0ZXJpbmcvb2FzLWZvcm1hdC1maWx0ZXIuanNvbgpgYGAKCkZvciBtb3JlIGRldGFpbHMsIHJldmlldyB0aGUgW2NsaS1maWx0ZXJpbmcgZXhhbXBsZV0oaHR0cHM6Ly9naXRodWIuY29tL2FwaWRlY2stbGlicmFyaWVzL3BvcnRtYW4vdHJlZS9tYWluL2V4YW1wbGVzL2NsaS1maWx0ZXJpbmcpLgoKIyMjIyMjIEFkZCBleHRyYSBmb3JtcyB0byBKc29uIHNjaGVtYSB2YWxpZGF0aW9uCgpgYGAKcG9ydG1hbiAtbCAuL3RtcC9zcGVjcy9jcm0ueW1sIC1vIC4vdG1wL3NwZWNzL2NybS5wb3N0bWFuLmpzb24gLS1leHRyYVVua25vd25Gb3JtYXRzIHVsaWQgb25lIHR3bwpgYGAKClRoaXMgbWFrZXMgdGhlIHNjaGVtYSB2YWxpZGF0aW9uIG1vcmUgbGVuaWVudCwgYW5kIHNvbHZlcyBwcm9ibGVtcyB3aXRoIHVua25vd24gZm9ybWF0cwoKIyMjIyMjIFVwbG9hZCBuZXdseSBnZW5lcmF0ZWQgY29sbGVjdGlvbiB0byBQb3N0bWFuLCB3aGljaCB3aWxsIHVwc2VydCB0aGUgY29sbGVjdGlvbiwgYmFzZWQgb24gdGhlIGNvbGxlY3Rpb24gbmFtZQoKYGBgCnBvcnRtYW4gLWwgLi90bXAvc3BlY3MvY3JtLnltbCAtLXN5bmNQb3N0bWFuCmBgYAoKVXBsb2FkIG5ld2x5IGdlbmVyYXRlZCBjb2xsZWN0aW9uIHRvIFBvc3RtYW4gdXNpbmcgdGhlIGNvbGxlY3Rpb24gVUlEIHRvIG92ZXJ3cml0ZSB0aGUgZXhpc3RpbmcuCgpgYGAKcG9ydG1hbiAtbCAuL3RtcC9zcGVjcy9jcm0ueW1sIC0tc3luY1Bvc3RtYW4gLXAgOTYwMTk2M2EtNTNmZi00YWFhLTkyYTAtMmU3MGE4YTJhNzQ4CmBgYAoKV2hlbiBhIGNvbGxlY3Rpb24gZ2V0cyBsYXJnZSwgdGhlIFBvc3RtYW4gQVBJIHdpbGwgY29tcGFyZSBhbGwgdGhlIHJlcXVlc3RzIHdoZW4gdXBkYXRpbmcgdGhlIGNvbGxlY3Rpb24uIFRoaXMgY2FuIHRha2Ugc29tZSB0aW1lIGV2ZW4gcmVzdWx0IGluIDV4eCBlcnJvcnMuClRvIG92ZXJjb21lIHRoaXMsIHlvdSBjYW4gdXNlIHRoZSBgLS1wb3N0bWFuRmFzdFN5bmNgIG9wdGlvbi4gVGhpcyBvcHRpb24gd2lsbCBzeW5jIHlvdXIgY29sbGVjdGlvbiB0byBQb3N0bWFuIGJ5IHVzaW5nICJkZWxldGUiIGFuZCAiY3JlYXRlIiBvcGVyYXRpb25zIGluc3RlYWQgb2YgdGhlICJ1cGRhdGUiLgoKUkVNQVJLOiBVc2luZyBgLS1wb3N0bWFuRmFzdFN5bmNgIHdpbGwgcmVzdWx0IGluIGEgbmV3IFBvc3RtYW4gY29sbGVjdGlvbiBhbmQgUG9zdG1hbiBVSUQgZm9yIGVhY2ggc3luYy4KCmBgYApwb3J0bWFuIC1sIC4vdG1wL3NwZWNzL2NybS55bWwgLS1zeW5jUG9zdG1hbiAtLXBvc3RtYW5GYXN0U3luYwpgYGAKClBvcnRtYW4gY2FjaGVzIGEgc2V0IG9mIFBvc3RtYW4gQVBJIGRhdGEgdG8gZmFjaWxpdGF0ZSBmYXN0ZXIgbG9va3VwcyBhbmQgdXBsb2FkcywgcHJldmVudGluZyB1bm5lY2Vzc2FyeSBjb25uZWN0aW5nIHRvIHRoZSBQb3N0bWFuIEFQSS4KSW4gY2FzZSB5b3UgbmVlZCB0byByZXNldCB0aGUgY2FjaGUgeW91IHNpbXBseSByZW1vdmUgdGhlIGAucG9ydG1hbi5jYWNoZS5qc29uYCBmaWxlIG9yIHNldCB0aGUgYC0tcG9zdG1hblJlZnJlc2hDYWNoZWAgb3B0aW9uIHdoZW4gcnVubmluZyB0aGUgUG9zdG1hbiBzeW5jLgoKYGBgCnBvcnRtYW4gLWwgLi90bXAvc3BlY3MvY3JtLnltbCAtLXN5bmNQb3N0bWFuIC0tcG9zdG1hblJlZnJlc2hDYWNoZQpgYGAKCiMjIyMjIyBQYXNzIGN1c3RvbSBwYXRocyBmb3IgY29uZmlnIGZpbGVzCgpBbGwgY29uZmlndXJhdGlvbiBvcHRpb25zIHRvIGNvbnZlcnQgZnJvbSBPcGVuQVBJIHRvIFBvc3RtYW4gY2FuIGJlIG9uIHRoZSBbb3BlbmFwaS10by1wb3N0bWFuXShodHRwczovL2dpdGh1Yi5jb20vcG9zdG1hbmxhYnMvb3BlbmFwaS10by1wb3N0bWFuL2Jsb2IvZGV2ZWxvcC9PUFRJT05TLm1kKSBwYWNrYWdlIGRvY3VtZW50YXRpb24uClBvcnRtYW4gcHJvdmlkZXMgYSBkZWZhdWx0IG9wZW5hcGktdG8tcG9zdG1hbiBjb25maWd1cmF0aW9uIFtwb3N0bWFuLWNvbmZpZy5kZWZhdWx0Lmpzb25dKHBvc3RtYW4tY29uZmlnLmRlZmF1bHQuanNvbiksIHdoaWNoIHdpbGwgYmUgdXNlZCBpZiBubyBjdXN0b20gY29uZmlnIGAtLXBvc3RtYW5Db25maWdGaWxlYCBpcyBwYXNzZWQuCgpQb3J0bWFuIGNvbmZpZ3VyYXRpb24gZmlsZSBpbiBKU09OIGZvcm1hdDoKCmBgYApwb3J0bWFuIC11IGh0dHBzOi8vc3BlY3MuYXBpZGVjay5jb20vY3JtLnltbCAtYyAuL3RtcC9jcm0vcG9ydG1hbi1jb25maWcuanNvbiAtcyAuL2NvbW1vbi9wb3N0bWFuLWNvbmZpZy5qc29uCmBgYAoKUG9ydG1hbiBjb25maWd1cmF0aW9uIGZpbGUgaW4gWUFNTCBmb3JtYXQ6CgpgYGAKcG9ydG1hbiAtdSBodHRwczovL3NwZWNzLmFwaWRlY2suY29tL2NybS55bWwgLWMgLi90bXAvY3JtL3BvcnRtYW4tY29uZmlnLnlhbWwgLXMgLi9jb21tb24vcG9zdG1hbi1jb25maWcuanNvbgpgYGAKCiMjIyMjIyBQYXNzIGFsbCBDTEkgb3B0aW9ucyBhcyBKU09OL1lBTUwgZmlsZQoKQWxsIHRoZSBDTEkgb3B0aW9ucyBjYW4gYmUgbWFuYWdlZCBpbiBhIHNlcGFyYXRlIGNvbmZpZ3VyYXRpb24gZmlsZSBhbmQgcGFzc2VkIGFsb25nIHRvIHRoZSBwb3J0bWFuIGNvbW1hbmQuIFRoaXMgd2lsbAptYWtlIGNvbmZpZ3VyYXRpb24gZWFzaWVyLCBlc3BlY2lhbGx5IGluIENJL0NEIGltcGxlbWVudGF0aW9ucy4KClBvcnRtYW4gQ0xJIG9wdGlvbnMgc2V0dGluZ3MgaW4gSlNPTiBmb3JtYXQKCmBgYApwb3J0bWFuIC0tY2xpT3B0aW9uc0ZpbGUgLi9leGFtcGxlcy9jbGktb3B0aW9ucy9wb3J0bWFuLWNsaS1vcHRpb25zLmpzb24KYGBgCgpQb3J0bWFuIENMSSBvcHRpb25zIHNldHRpbmdzIGluIFlBTUwgZm9ybWF0CgpgYGAKcG9ydG1hbiAtLWNsaU9wdGlvbnNGaWxlIC4vZXhhbXBsZXMvY2xpLW9wdGlvbnMvcG9ydG1hbi1jbGktb3B0aW9ucy55YW1sCmBgYAoKQWxsIHRoZSBhdmFpbGFibGUgUG9ydG1hbiBDTEkgb3B0aW9ucyBjYW4gYmUgdXNlZCBpbiB0aGUgY29uZmlnIGZpbGUuCkJ5IHBhc3NpbmcgdGhlIENMSSBvcHRpb25zIGFzIHBhcmFtZXRlciwgeW91IGNhbiBvdmVyd3JpdGUgdGhlIGRlZmluZWQgQ0xJIG9wdGlvbnMgZGVmaW5lZCBpbiB0aGUgZmlsZS4KCkZvciBtb3JlIGRldGFpbHMsIHJldmlldyB0aGUgW2NsaS1vcHRpb25zIGV4YW1wbGVdKGh0dHBzOi8vZ2l0aHViLmNvbS9hcGlkZWNrLWxpYnJhcmllcy9wb3J0bWFuL3RyZWUvbWFpbi9leGFtcGxlcy9jbGktb3B0aW9ucykuCgojIyMjIyMgUnVuIE5ld21hbiB3aXRoIE5ld21hbiBvcHRpb25zCgpBbGwgW05ld21hbiBjb25maWd1cmF0aW9uIG9wdGlvbnNdKGh0dHBzOi8vbGVhcm5pbmcucG9zdG1hbi5jb20vZG9jcy9ydW5uaW5nLWNvbGxlY3Rpb25zL3VzaW5nLW5ld21hbi1jbGkvY29tbWFuZC1saW5lLWludGVncmF0aW9uLXdpdGgtbmV3bWFuLyNvcHRpb25zKSB0byBydW4gTmV3bWFuIGNhbiBiZSBwYXNzZWQgYWxvbmcgdGhyb3VnaCBQb3J0bWFuLgoKYGBgCnBvcnRtYW4gLXUgaHR0cHM6Ly9zcGVjcy5hcGlkZWNrLmNvbS9jcm0ueW1sIC1jIC4vdG1wL2NybS9wb3J0bWFuLWNvbmZpZy5qc29uIC0tcnVuTmV3bWFuIC0tbmV3bWFuT3B0aW9uc0ZpbGUgLi90bXAvY3JtL25ld21hbi1vcHRpb25zLmpzb24KYGBgCgpGb3IgbW9yZSBkZXRhaWxzLCByZXZpZXcgdGhlIFtjbGktb3B0aW9ucyBleGFtcGxlXShodHRwczovL2dpdGh1Yi5jb20vYXBpZGVjay1saWJyYXJpZXMvcG9ydG1hbi90cmVlL21haW4vZXhhbXBsZXMvY2xpLW9wdGlvbnMpLgoKTk9URTogTmV3bWFuIGlzIHNldCB0byBpZ25vcmUgcmVkaXJlY3RzIHRvIGFsbG93IGZvciB0ZXN0aW5nIHJlZGlyZWN0IHJlc3BvbnNlIGNvZGVzLiBJZiB5b3UgYXJlIHJ1bm5pbmcgY29sbGVjdGlvbnMgd2l0aGluIFBvc3RtYW4gVUksIHlvdSdsbCBuZWVkIHRvIGVuc3VyZSBQb3N0bWFuIGlzIHNldCB0byB0aGUgc2FtZSwgb3IgeW91ciByZWRpcmVjdCB0ZXN0cyB3aWxsIGZhaWwuCgo+IFBvc3RtYW4gPiBQcmVmZXJlbmNlcyA+IEF1dG9tYXRpY2FsbHkgZm9sbG93IHJlZGlyZWN0cyA+IE9GRgoKIyMjIE91dHB1dAoKV2l0aG91dCBzcGVjaWZ5aW5nIHRoZSBvdXRwdXQgbG9jYXRpb24sIHlvdXIgZ2VuZXJhdGVkIFBvc3RtYW4gQ29sbGVjdGlvbiBpcyB3cml0dGVuIHRvIGAuL3RtcC9jb252ZXJ0ZWQvJHtzcGVjTmFtZX0uanNvbmAgaWYgeW91IGFyZSBtYW51YWxseSBpbXBvcnRpbmcgdG8gUG9zdG1hbiBvciBuZWVkIHRvIGluc3BlY3QgZm9yIGRlYnVnZ2luZy4KCkJ5IHVzaW5nIGAtb2Agb3IgYC0tb3V0cHV0YCBwYXJhbWV0ZXIsIHlvdSBjYW4gZGVmaW5lIHRoZSBsb2NhdGlvbiB3aGVyZSB0aGUgUG9zdG1hbiBjb2xsZWN0aW9uIHdpbGwgYmUgd3JpdHRlbi4KCmBgYApwb3J0bWFuIC1sIC4vdG1wL3NwZWNzL2NybS55bWwgLW8gLi90bXAvc3BlY3MvY3JtLlBvc3RtYW4uanNvbgpgYGAKCiMjIFBvcnRtYW4gc2V0dGluZ3MKClRoZSBQb3J0bWFuIHNldHRpbmdzIGNvbnNpc3Qgb3V0IG9mIG11bHRpcGxlIHBhcnRzOgoKLSAqKnZlcnNpb24qKiA6IHdoaWNoIHJlZmVycyB0byB0aGUgSlNPTiBQb3J0bWFuIGNvbmZpZ3VyYXRpb24gdmVyc2lvbi4KLSAqKnRlc3RzKiogOiB3aGljaCByZWZlcnMgdG8gdGhlIGRlZmluaXRpb25zIGZvciB0aGUgZ2VuZXJhdGVkIGNvbnRyYWN0ICYgdmFyaWFuY2UgdGVzdHMuCiAgLSAqKmNvbnRyYWN0VGVzdHMqKiA6IHJlZmVycyB0byB0aGUgb3B0aW9ucyB0byBlbmFibGVkIGF1dG9nZW5lcmF0ZWQgY29udHJhY3QgdGVzdHMuCiAgLSAqKmNvbnRlbnRUZXN0cyoqIDogcmVmZXJzIHRvIHRoZSBhZGRpdGlvbmFsIFBvc3RtYW4gdGVzdHMgdGhhdCBjaGVjayB0aGUgY29udGVudC4KICAtICoqdmFyaWF0aW9uVGVzdHMqKiA6IHJlZmVycyB0byB0aGUgb3B0aW9ucyB0byBkZWZpbmUgdmFyaWF0aW9uIHRlc3RzLgogIC0gKippbnRlZ3JhdGlvblRlc3RzKiogOiByZWZlcnMgdG8gdGhlIG9wdGlvbnMgdG8gZGVmaW5lIGludGVncmF0aW9uIHRlc3RzLgogIC0gKipleHRlbmRUZXN0cyoqIDogcmVmZXJzIHRvIHRoZSBjdXN0b20gYWRkaXRpb25zIG9mIG1hbnVhbGx5IGNyZWF0ZWQgUG9zdG1hbiB0ZXN0cy4KLSAqKmFzc2lnblZhcmlhYmxlcyoqIDogd2hpY2ggcmVmZXJzIHRvIHNldHRpbmcgUG9zdG1hbiBjb2xsZWN0aW9uIHZhcmlhYmxlcyBmb3IgZWFzaWVyIGF1dG9tYXRpb24uCi0gKipvdmVyd3JpdGVzKiogOiB3aGljaCByZWZlcnMgdG8gdGhlIGN1c3RvbSBhZGRpdGlvbnMvbW9kaWZpY2F0aW9ucyBvZiB0aGUgT3BlbkFQSS9Qb3N0bWFuIHJlcXVlc3QgZGF0YS4KLSAqKm9wZXJhdGlvblByZVJlcXVlc3RTY3JpcHRzKiogOiB3aGljaCByZWZlcnMgdG8gaW5qZWN0aW5nIFBvc3RtYW4gUHJlLXJlcXVlc3QgU2NyaXB0cyBmb3IgcmVxdWVzdHMuCi0gKipnbG9iYWxzKiogOiB3aGljaCByZWZlcnMgdG8gdGhlIGN1c3RvbWl6YXRpb24gdGhhdCBhcHBsaWVzIGZvciB0aGUgd2hvbGUgUG9zdG1hbiBjb2xsZWN0aW9uLgoKIyMjIFBvcnRtYW4gdGFyZ2V0aW5nCgpJdCBpcyBwb3NzaWJsZSB0byBpbmplY3QgUG9zdG1hbiB0ZXN0cyBhbmQgcHJlLXJlZ2lzdGVyIHNjcmlwdHMsIGFzc2lnbiB2YXJpYWJsZXMgYW5kIG92ZXJ3cml0ZSBxdWVyeSBwYXJhbXMsIGhlYWRlcnMsIHJlcXVlc3QgYm9keSBkYXRhIHdpdGggdmFsdWVzLgoKVG8gYmUgYWJsZSB0byBkbyB0aGlzIHZlcnkgc3BlY2lmaWNhbGx5LCB0aGVyZSBhcmUgb3B0aW9ucyB0byBkZWZpbmUgdGhlIHRhcmdldHM6CgotICoqb3BlbkFwaU9wZXJhdGlvbklkIChTdHJpbmcpKiogOiBSZWZlcmVuY2VzIHRvIHRoZSBPcGVuQVBJIG9wZXJhdGlvbklkLCBleGFtcGxlOiBgbGVhZHNBbGxgCi0gKipvcGVuQXBpT3BlcmF0aW9uSWRzIChBcnJheSkqKiA6IFJlZmVyZW5jZXMgdG8gYW4gYXJyYXkgb2YgT3BlbkFQSSBvcGVyYXRpb25JZHMsIGV4YW1wbGU6IGBbJ2xlYWRzQWxsJywgJ2NvbXBhbmllc0FsbCcsICdjb250YWN0c0FsbCddYAotICoqb3BlbkFwaU9wZXJhdGlvbiAoU3RyaW5nKSoqIDogUmVmZXJlbmNlcyB0byBhIGNvbWJpbmF0aW9uIG9mIHRoZSBPcGVuQVBJIG1ldGhvZCAmIHBhdGgsIGV4YW1wbGU6IGBHRVQ6Oi9jcm0vbGVhZHNgCgotICoqZXhjbHVkZUZvck9wZXJhdGlvbnMgKEFycmF5KSoqIDogUmVmZXJlbmNlcyB0byBPcGVuQVBJIG9wZXJhdGlvbnMgdGhhdCB3aWxsIGJlIHNraXBwZWQgZm9yIHRhcmdldGluZy4gSXQgc3VwcG9ydHMgYm90aCB0aGUgYG9wZW5BcGlPcGVyYXRpb25JZGAgYW5kIGBvcGVuQXBpT3BlcmF0aW9uYCBmb3JtYXQsIGV4YW1wbGU6IGBbImxlYWRzQWRkIiwgIkdFVDo6L2NybS9sZWFkcy97aWR9Il1gCgpBbiBgb3BlbkFwaU9wZXJhdGlvbklkYCBpcyBhbiBvcHRpb25hbCBwcm9wZXJ0eS4gVG8gb2ZmZXIgc3VwcG9ydCBmb3IgT3BlbkFQSSBkb2N1bWVudHMgdGhhdCBkb24ndCBoYXZlIG9wZXJhdGlvbklkcywgd2UKaGF2ZSBhZGRlZCB0aGUgYG9wZW5BcGlPcGVyYXRpb25gIGRlZmluaXRpb24sIHdoaWNoIGlzIHRoZSB1bmlxdWUgY29tYmluYXRpb24gb2YgdGhlIE9wZW5BUEkgbWV0aG9kICYgcGF0aCwgd2l0aCBhIGA6OmAKc2VwYXJhdG9yIHN5bWJvbC4gVGhlIHRhcmdldGluZyBvcHRpb24gYGV4Y2x1ZGVGb3JPcGVyYXRpb25zYCBpcyByZWFsbHkgdXNlZnVsIHdoZW4gdXNpbmcgd2lsZGNhcmRzLCB0byBhbGxvdyBleGNsdXNpb25zIGZyb20gdGhlIHdpbGRjYXJkLgoKVGhpcyB3aWxsIGFsbG93IHRhcmdldGluZyBmb3IgdmVyeSBzcGVjaWZpYyBPcGVuQVBJIGl0ZW1zLgoKVG8gZmFjaWxpdGF0ZSBtYW5hZ2luZyB0aGUgZmlsdGVyaW5nLCB3ZSBoYXZlIGluY2x1ZGVkIHdpbGRjYXJkIG9wdGlvbnMgZm9yIHRoZSBgb3BlbkFwaU9wZXJhdGlvbmAgb3B0aW9uLCBzdXBwb3J0aW5nCnRoZSBtZXRob2RzICYgcGF0aCBkZWZpbml0aW9ucy4KClJFTUFSSzogQmUgc3VyZSB0byBwdXQgcXVvdGVzIGFyb3VuZCB0aGUgdGFyZ2V0IGRlZmluaXRpb24uCgotICoqU3RyaWN0IG1hdGNoaW5nKiogZXhhbXBsZTogYCJvcGVuQXBpT3BlcmF0aW9uIjogIkdFVDo6L2NybS9sZWFkcyIsYAogIFRoaXMgd2lsbCB0YXJnZXQgb25seSB0aGUgIkdFVCIgbWV0aG9kIGFuZCB0aGUgc3BlY2lmaWMgcGF0aCAiL2NybS9sZWFkcyIKCi0gKipNZXRob2Qgd2lsZGNhcmQgbWF0Y2hpbmcqKiBleGFtcGxlOiBgIm9wZW5BcGlPcGVyYXRpb24iOiAiKjo6L2NybS9sZWFkcyIsYAogIFRoaXMgd2lsbCB0YXJnZXQgYWxsIG1ldGhvZHMgKCdnZXQnLCAncHV0JywgJ3Bvc3QnLCAnZGVsZXRlJywgJ29wdGlvbnMnLCAnaGVhZCcsICdwYXRjaCcsICd0cmFjZScpIGFuZCB0aGUgc3BlY2lmaWMKICBwYXRoICIvY3JtL2xlYWRzIgoKLSAqKlBhdGggd2lsZGNhcmQgbWF0Y2hpbmcqKiBleGFtcGxlOiBgIm9wZW5BcGlPcGVyYXRpb24iOiAiR0VUOjovY3JtLyoiYAogIFRoaXMgd2lsbCB0YXJnZXQgb25seSB0aGUgIkdFVCIgbWV0aG9kIGFuZCBhbnkgcGF0aCBtYXRjaGluZyBhbnkgZm9sZGVyIGJlaGluZCB0aGUgIi9jcm0iLCBsaWtlICIvY3JtL2NvbXBhbmllcyIgYW5kCiAgIi9jcm0vbGVhZHMiLgoKLSAqKk1ldGhvZCAmIFBhdGggd2lsZGNhcmQgbWF0Y2hpbmcqKiBleGFtcGxlOiBgIm9wZW5BcGlPcGVyYXRpb24iOiAiKjo6L2NybS8qIixgCiAgQSBjb21iaW5hdGlvbiBvZiB3aWxkY2FyZHMgZm9yIHRoZSBtZXRob2QgYW5kIHBhdGggcGFydHMgaXMgZXZlbiBwb3NzaWJsZS4KCiMjIyBQb3J0bWFuIC0gYHRlc3RzYCBwcm9wZXJ0aWVzCgpUaGUgUG9ydG1hbiBgdGVzdHNgIGlzIHdoZXJlIHlvdSB3b3VsZCBkZWZpbmUgdGhlIHRlc3RzIHRoYXQgd291bGQgYmUgYXBwbGljYWJsZSBhbmQgYXV0b21hdGljYWxseSBnZW5lcmF0ZWQgYnkgUG9ydG1hbiwgYmFzZWQgb24gdGhlIE9wZW5BUEkgZG9jdW1lbnQuClRoZSBjb250cmFjdCB0ZXN0cyBhcmUgZ3JvdXBlZCBpbiBhbiBhcnJheSBvZiBgY29udHJhY3RUZXN0c2AuCgojIyMjIGNvbnRyYWN0VGVzdHMgb3B0aW9ucwoKLSAqKm9wZW5BcGlPcGVyYXRpb25JZCAoU3RyaW5nKSoqIDogUmVmZXJlbmNlcyB0byB0aGUgT3BlbkFQSSBvcGVyYXRpb25JZC4gKGV4YW1wbGU6IGBsZWFkc0FsbGApCi0gKipvcGVuQXBpT3BlcmF0aW9uSWRzIChBcnJheSkqKiA6IFJlZmVyZW5jZXMgdG8gYW4gYXJyYXkgb2YgT3BlbkFQSSBvcGVyYXRpb25JZHMsIGV4YW1wbGU6IGBbJ2xlYWRzQWxsJywgJ2NvbXBhbmllc0FsbCcsICdjb250YWN0c0FsbCddYAotICoqb3BlbkFwaU9wZXJhdGlvbiAoU3RyaW5nKSoqIDogUmVmZXJlbmNlcyB0byBhIGNvbWJpbmF0aW9uIG9mIHRoZSBPcGVuQVBJIG1ldGhvZCAmIHBhdGggKGV4YW1wbGU6IGBHRVQ6Oi9jcm0vbGVhZHNgKQotICoqZXhjbHVkZUZvck9wZXJhdGlvbnMgKEFycmF5IHwgb3B0aW9uYWwpKiogOiBSZWZlcmVuY2VzIHRvIE9wZW5BUEkgb3BlcmF0aW9ucyB0aGF0IHdpbGwgYmUgc2tpcHBlZCBmb3IgdGFyZ2V0aW5nLCBleGFtcGxlOiBgWyJsZWFkc0FkZCIsICJHRVQ6Oi9jcm0vbGVhZHMve2lkfSJdYAoKLSAqKnN0YXR1c1N1Y2Nlc3MgKEJvb2xlYW4pKiogOiBBZGRzIHRoZSB0ZXN0IGlmIHRoZSByZXNwb25zZSBvZiB0aGUgUG9zdG1hbiByZXF1ZXN0IHJldHVybmVkIGEgMnh4Ci0gKipzdGF0dXNDb2RlIChCb29sZWFuLCBIVFRQIGNvZGUpKiogOiBBZGRzIHRoZSB0ZXN0IGlmIHRoZSByZXNwb25zZSBvZiB0aGUgUG9zdG1hbiByZXF1ZXN0IHJldHVybiBhIHNwZWNpZmljIHN0YXR1cyBjb2RlLgotICoqcmVzcG9uc2VUaW1lIChCb29sZWFuKSoqIDogQWRkcyB0aGUgdGVzdCB0byB2ZXJpZnkgaWYgdGhlIHJlc3BvbnNlIG9mIHRoZSBQb3N0bWFuIHJlcXVlc3QgaXMgcmV0dXJuZWQgd2l0aGluIGEgbnVtYmVyIG9mIG1zLgogIC0gKiptYXhNcyAobnVtYmVyKSoqIDogRGVmaW5lIHRoZSBleHBlY3RlZCBudW1iZXIgb2YgbXMgZm9yIHRoZSBgcmVzcG9uc2VUaW1lYCBjaGVjay4KLSAqKmNvbnRlbnRUeXBlIChCb29sZWFuKSoqIDogQWRkcyB0aGUgdGVzdCBpZiB0aGUgcmVzcG9uc2UgaGVhZGVyIGlzIG1hdGNoaW5nIHRoZSBleHBlY3RlZCBjb250ZW50LXR5cGUgZGVmaW5lZCBpbiB0aGUgT3BlbkFQSSBzcGVjLgotICoqanNvbkJvZHkgKEJvb2xlYW4pKiogOiBBZGRzIHRoZSB0ZXN0IGlmIHRoZSByZXNwb25zZSBib2R5IGlzIG1hdGNoaW5nIHRoZSBleHBlY3RlZCBjb250ZW50LXR5cGUgZGVmaW5lZCBpbiB0aGUgT3BlbkFQSSBzcGVjLgotICoqc2NoZW1hVmFsaWRhdGlvbiAoQm9vbGVhbikqKiA6IEFkZHMgdGhlIHRlc3QgaWYgdGhlIHJlc3BvbnNlIGJvZHkgaXMgbWF0Y2hpbmcgdGhlIEpTT04gc2NoZW1hIGRlZmluZWQgaW4gdGhlIE9wZW5BUEkgc3BlYy4gVGhlIEpTT04gc2NoZW1hIGlzIGluc2VydGVkIGlubGluZSBpbiB0aGUgUG9zdG1hbiB0ZXN0LgogIC0gKiphZGRpdGlvbmFsUHJvcGVydGllcyAoQm9vbGVhbikqKiA6IEV4dGVuZCB0aGUgZXhwZWN0ZWQgSlNPTiBzY2hlbWEgdXNlZCBmb3IgdGhlIGBzY2hlbWFWYWxpZGF0aW9uYCBieSBzZXR0aW5nIGFsbCB0aGUgYGFkZGl0aW9uYWxQcm9wZXJ0aWVzYC4KLSAqKmhlYWRlcnNQcmVzZW50IChCb29sZWFuKSoqIDogQWRkcyB0aGUgdGVzdCB0byB2ZXJpZnkgaWYgdGhlIFBvc3RtYW4gcmVzcG9uc2UgaGVhZGVyIGhhcyB0aGUgcmVxdWlyZWQgaGVhZGVyIG5hbWVzIHByZXNlbnQsIGxpa2UgZGVmaW5lZCBpbiB0aGUgT3BlbkFQSSBzcGVjLgoKRm9yIG1vcmUgZGV0YWlscywgcmV2aWV3IHRoZSBbY29udHJhY3QtdGVzdHMgZXhhbXBsZV0oaHR0cHM6Ly9naXRodWIuY29tL2FwaWRlY2stbGlicmFyaWVzL3BvcnRtYW4vdHJlZS9tYWluL2V4YW1wbGVzL3Rlc3RzdWl0ZS1jb250cmFjdC10ZXN0cykuCgojIyMjIHZhcmlhdGlvblRlc3RzIG9wdGlvbnMKCi0gKipvcGVuQXBpT3BlcmF0aW9uSWQgKFN0cmluZykqKiA6IFJlZmVyZW5jZXMgdG8gdGhlIE9wZW5BUEkgb3BlcmF0aW9uSWQgZm9yIHdoaWNoIGEgdmFyaWF0aW9uIHdpbGwgYmUgY3JlYXRlZC4gKGV4YW1wbGU6IGBsZWFkc0FsbGApCi0gKipvcGVuQXBpT3BlcmF0aW9uSWRzIChBcnJheSkqKiA6IFJlZmVyZW5jZXMgdG8gYW4gYXJyYXkgb2YgT3BlbkFQSSBvcGVyYXRpb25JZHMsIGV4YW1wbGU6IGBbJ2xlYWRzQWxsJywgJ2NvbXBhbmllc0FsbCcsICdjb250YWN0c0FsbCddYAotICoqb3BlbkFwaU9wZXJhdGlvbiAoU3RyaW5nKSoqIDogUmVmZXJlbmNlcyB0byBhIGNvbWJpbmF0aW9uIG9mIHRoZSBPcGVuQVBJIG1ldGhvZCAmIHBhdGggZm9yIHdoaWNoIGEgdmFyaWF0aW9uIHdpbGwgYmUgY3JlYXRlZC4gKGV4YW1wbGU6IGBHRVQ6Oi9jcm0vbGVhZHNgKQotICoqZXhjbHVkZUZvck9wZXJhdGlvbnMgKEFycmF5IHwgb3B0aW9uYWwpKiogOiBSZWZlcmVuY2VzIHRvIE9wZW5BUEkgb3BlcmF0aW9ucyB0aGF0IHdpbGwgYmUgc2tpcHBlZCBmb3IgdGFyZ2V0aW5nLCBleGFtcGxlOiBgWyJsZWFkc0FkZCIsICJHRVQ6Oi9jcm0vbGVhZHMve2lkfSJdYAotICoqb3BlbkFwaVJlc3BvbnNlIChTdHJpbmcgfCBvcHRpb25hbCkqKiA6IFJlZmVyZW5jZXMgdG8gdGhlIE9wZW5BUEkgcmVzcG9uc2Ugb2JqZWN0IGNvZGUvbmFtZSBmb3Igd2hpY2ggYSB2YXJpYXRpb24gd2lsbCBiZSBjcmVhdGVkLiAoZXhhbXBsZTogYCI0MDQiYCkuIElmIG5vdCBkZWZpbmVkLCB0aGUgMXN0IHJlc3BvbnNlIG9iamVjdCBmcm9tIE9wZW5BUEkgd2lsbCBiZSB0YWtlbiBhcyBleHBlY3RlZCByZXNwb25zZS4gSWYgdGhlIGNvbmZpZ3VyZWQgYG9wZW5BcGlSZXNwb25zZWAgY29kZSBpcyBub3QgZGVmaW5lZCBpbiB0aGUgT3BlbkFQSSBkb2N1bWVudCwgUG9ydG1hbiB3aWxsIG5vdCBnZW5lcmF0ZSBhIHZhcmlhdGlvbiBmb3IgdGhlIHRhcmdldGVkIG9wZXJhdGlvbnMuCgotICoqb3ZlcndyaXRlcyoqIDogd2hpY2ggcmVmZXJzIHRvIHRoZSBjdXN0b20gYWRkaXRpb25zL21vZGlmaWNhdGlvbnMgb2YgdGhlIE9wZW5BUEkvUG9zdG1hbiByZXF1ZXN0IGRhdGEsIHNwZWNpZmljYWxseSBmb3IgdGhlIHZhcmlhdGlvbi4KLSAqKmZ1enppbmcqKiA6IEZ1enogdGVzdGluZyBzZXRzIHVuZXhwZWN0ZWQgdmFsdWVzIGZvciBBUEkgcmVxdWVzdHMsIHRvIGNhdXNlIHVuZXhwZWN0ZWQgYmVoYXZpb3IgYW5kIGVycm9ycyBpbiB0aGUgQVBJIHJlc3BvbnNlLgotICoqdGVzdHMqKiA6IHdoaWNoIHJlZmVycyB0byB0aGUgZGVmaW5pdGlvbnMgZm9yIHRoZSBnZW5lcmF0ZWQgY29udHJhY3QgJiB2YXJpYW5jZSB0ZXN0cyBmb3IgdGhlIHZhcmlhdGlvbi4KICAtICoqY29udHJhY3RUZXN0cyoqIDogcmVmZXJzIHRvIHRoZSBvcHRpb25zIHRvIGVuYWJsZWQgYXV0b2dlbmVyYXRlZCBjb250cmFjdCB0ZXN0cyBmb3IgdGhlIHZhcmlhdGlvbi4KICAtICoqY29udGVudFRlc3RzKiogOiByZWZlcnMgdG8gdGhlIGFkZGl0aW9uYWwgUG9zdG1hbiB0ZXN0cyB0aGF0IGNoZWNrIHRoZSBjb250ZW50IGZvciB0aGUgdmFyaWF0aW9uLgogIC0gKipleHRlbmRUZXN0cyoqIDogcmVmZXJzIHRvIHRoZSBjdXN0b20gYWRkaXRpb25zIG9mIG1hbnVhbCBjcmVhdGVkIFBvc3RtYW4gdGVzdHMgdG8gYmUgaW5jbHVkZWQgaW4gdGhlIHZhcmlhdGlvbi4KLSAqKmFzc2lnblZhcmlhYmxlcyoqIDogVGhpcyByZWZlcnMgdG8gc2V0dGluZyBQb3N0bWFuIGNvbGxlY3Rpb24gdmFyaWFibGVzIHRoYXQgYXJlIGFzc2lnbmVkIGJhc2VkIG9uIHZhcmlhdGlvbi4KCkZvciBtb3JlIGRldGFpbHMsIHJldmlldyB0aGUgW2NvbnRlbnQtdmFyaWF0aW9uIGV4YW1wbGVdKGh0dHBzOi8vZ2l0aHViLmNvbS9hcGlkZWNrLWxpYnJhcmllcy9wb3J0bWFuL3RyZWUvbWFpbi9leGFtcGxlcy90ZXN0c3VpdGUtdmFyaWF0aW9uLXRlc3RzKS4KCiMjIyMgaW50ZWdyYXRpb25UZXN0cyBvcHRpb25zCgotICoqbmFtZSAoU3RyaW5nKSoqIDogQXMgSW50ZWdyYXRpb24gdGVzdHMgd2lsbCBub3JtYWxseSBjb250YWluIG11bHRpcGxlIG9wZXJhdGlvbnMsIHRoaXMgaXMgdGhlIGZvbGRlciBuYW1lIHRoYXQgd2lsbCBiZSBnZW5lcmF0ZWQgaW4gdGhlIEludGVncmF0aW9uIFRlc3RzIGZvbGRlciBpbiB5b3VyIFBvc3RtYW4gY29sbGVjdGlvbi4KLSAqKm9wZXJhdGlvbnMgKEFycmF5KSoqIDogQXJyYXkgb2Ygb3BlcmF0aW9ucyB0byBiZSBwZXJmb3JtZWQKCiMjIyBQb3J0bWFuIC0gYGNvbnRlbnRUZXN0c2AgcHJvcGVydGllcwoKQ29udGVudCB0ZXN0cyB3aWxsIHZhbGlkYXRlIGlmIHRoZSByZXNwb25zZSBwcm9wZXJ0eSB2YWx1ZXMgd2lsbCBtYXRjaCB0aGUgZXhwZWN0ZWQgZGVmaW5lZCB2YWx1ZXMuCldoaWxlIHRoZSBQb3J0bWFuIGB0ZXN0c2AgdmVyaWZ5IHRoZSAiY29udHJhY3QiIG9mIHRoZSBBUEksIHRoZSBgY29udGVudFRlc3RzYCB3aWxsIHZlcmlmeSB0aGUgY29udGVudCBvZiB0aGUgQVBJLgoKIyMjIyBjb250ZW50VGVzdHMgb3B0aW9ucwoKLSAqKm9wZW5BcGlPcGVyYXRpb25JZCAoU3RyaW5nKSoqIDogUmVmZXJlbmNlcyB0byB0aGUgT3BlbkFQSSBvcGVyYXRpb25JZC4gKGV4YW1wbGU6IGBsZWFkc0FsbGApCi0gKipvcGVuQXBpT3BlcmF0aW9uSWRzIChBcnJheSkqKiA6IFJlZmVyZW5jZXMgdG8gYW4gYXJyYXkgb2YgT3BlbkFQSSBvcGVyYXRpb25JZHMsIGV4YW1wbGU6IGBbJ2xlYWRzQWxsJywgJ2NvbXBhbmllc0FsbCcsICdjb250YWN0c0FsbCddYAotICoqb3BlbkFwaU9wZXJhdGlvbiAoU3RyaW5nKSoqIDogUmVmZXJlbmNlcyB0byBhIGNvbWJpbmF0aW9uIG9mIHRoZSBPcGVuQVBJIG1ldGhvZCAmIHBhdGggKGV4YW1wbGU6IGBHRVQ6Oi9jcm0vbGVhZHNgKQotICoqZXhjbHVkZUZvck9wZXJhdGlvbnMgKEFycmF5IHwgb3B0aW9uYWwpKiogOiBSZWZlcmVuY2VzIHRvIE9wZW5BUEkgb3BlcmF0aW9ucyB0aGF0IHdpbGwgYmUgc2tpcHBlZCBmb3IgdGFyZ2V0aW5nLCBleGFtcGxlOiBgWyJsZWFkc0FkZCIsICJHRVQ6Oi9jcm0vbGVhZHMve2lkfSJdYAoKLSAqKnJlc3BvbnNlQm9keVRlc3RzIChBcnJheSkqKiA6IEFycmF5IG9mIGtleS92YWx1ZSBwYWlycyBvZiBwcm9wZXJ0aWVzICYgdmFsdWVzIGluIHRoZSBQb3N0bWFuIHJlc3BvbnNlIGJvZHkuCgogIC0gKiprZXkgKFN0cmluZykqKiA6IFRoZSBrZXkgdGhhdCB3aWxsIGJlIHRhcmdldGVkIGluIHRoZSByZXNwb25zZSBib2R5IHRvIGNoZWNrIGlmIGl0IGV4aXN0cy4gVG8gbG9vayB1cCBhIGtleSB3aXRoaW4gaW4gYXJyYXkgb2Ygb2JqZWN0cywgeW91IGNhbiB1c2UgYW4gYXJyYXkgaW5kZXggKGV4YW1wbGUgYGRhdGEud2Vic2l0ZXNbMF0udXJsYCkgb3IgYSAqIHdpbGRjYXJkIChleGFtcGxlOiBgZGF0YS53ZWJzaXRlc1sqXS51cmxgKSB3aGljaCB1c2VzIHRoZSBgdmFsdWVgIHRvIG1hdGNoIGFuIG9iamVjdCBpbiBhbiBhcnJheS4gCiAgLSAqKnZhbHVlIChTdHJpbmcpKiogOiBUaGUgdmFsdWUgdGhhdCB3aWxsIGJlIHVzZWQgdG8gY2hlY2sgaWYgdGhlIHZhbHVlIGluIHRoZSByZXNwb25zZSBib2R5IHByb3BlcnR5IG1hdGNoZXMuCiAgLSAqKmNvbnRhaW5zIChTdHJpbmcpKiogOiBUaGUgdmFsdWUgdGhhdCB3aWxsIGJlIHVzZWQgdG8gY2hlY2sgaWYgdGhlIHZhbHVlIGlzIHByZXNlbnQgaW4gdGhlIHZhbHVlIG9mIHRoZSByZXNwb25zZSBib2R5IHByb3BlcnR5LgogIC0gKipvbmVPZiAoU3RyaW5nW10sTnVtYmVyW10sQm9vbGVhbltdKSoqIDogVGhlIHZhbHVlIHRoYXQgd2lsbCBiZSB1c2VkIHRvIGNoZWNrIG9uZSBvZiB0aGUgdmFsdWVzIGlzIG1hdGNoaW5nIHRoZSByZXNwb25zZSBib2R5IHByb3BlcnR5LgogIC0gKipsZW5ndGggKE51bWJlcikqKiA6IFRoZSBudW1iZXIgdGhhdCB3aWxsIGJlIHVzZWQgdG8gY2hlY2sgaWYgdGhlIHZhbHVlIG9mIHRoZSByZXNwb25zZSBib2R5IHByb3BlcnR5IChzdHJpbmcvYXJyYXkpIGhhcyBhIGxlbmd0aCBvZiB0aGUgZGVmaW5lZCBudW1iZXIuCiAgLSAqKm1pbkxlbmd0aCAoTnVtYmVyKSoqIDogVGhlIG51bWJlciB0aGF0IHdpbGwgYmUgdXNlZCB0byBjaGVjayBpZiB0aGUgdmFsdWUgb2YgdGhlIHJlc3BvbnNlIGJvZHkgcHJvcGVydHkgKHN0cmluZy9hcnJheSkgaGFzIGEgbWluaW11bSBsZW5ndGggb2YgdGhlIGRlZmluZWQgbnVtYmVyLgogIC0gKiptYXhMZW5ndGggKE51bWJlcikqKiA6IFRoZSBudW1iZXIgdGhhdCB3aWxsIGJlIHVzZWQgdG8gY2hlY2sgaWYgdGhlIHZhbHVlIG9mIHRoZSByZXNwb25zZSBib2R5IHByb3BlcnR5IChzdHJpbmcvYXJyYXkpIGhhcyBhIG1heGltdW0gbGVuZ3RoIG9mIHRoZSBkZWZpbmVkIG51bWJlci4KICAtICoqbm90RXhpc3QgKEJvb2xlYW4pKiogOiBUaGUgaW52ZXJzZSBvZiB0aGUga2V5IGNoZWNrIHRoYXQgdmVyaWZ5IGlmIHRoZSBrZXkgZG9lcyBub3QgZXhpc3QgaW4gdGhlIHJlc3BvbnNlIGJvZHkuCiAgLSAqKmFzc2VydCAoU3RyaW5nKSoqIDogQSBjdXN0b20gUG9zdG1hbiBhc3NlcnRpb24gdG8gY2hlY2sgaWYgdGhlIHZhbHVlIGluIHRoZSByZXNwb25zZSBib2R5IHByb3BlcnR5IG1hdGNoZXMgd2l0aCB0aGUgcHJvdmlkZWQgYXNzZXJ0aW9uIChleGFtcGxlOiBgbm90LnRvLmJlLm51bGxgKS4KICAKLSAqKnJlc3BvbnNlSGVhZGVyVGVzdHMgKEFycmF5KSoqIDogQXJyYXkgb2Yga2V5L3ZhbHVlIHBhaXJzIG9mIHByb3BlcnRpZXMgJiB2YWx1ZXMgaW4gdGhlIFBvc3RtYW4gcmVzcG9uc2UgaGVhZGVyLgogIC0gKiprZXkgKFN0cmluZykqKiA6IFRoZSBoZWFkZXIgbmFtZSB0aGF0IHdpbGwgYmUgdGFyZ2V0ZWQgaW4gdGhlIHJlc3BvbnNlIGhlYWRlciB0byBjaGVjayBpZiBpdCBleGlzdHMuCiAgLSAqKnZhbHVlIChTdHJpbmcpKiogOiBUaGUgdmFsdWUgdGhhdCB3aWxsIGJlIHVzZWQgdG8gY2hlY2sgaWYgdGhlIHZhbHVlIGluIHRoZSByZXNwb25zZSBoZWFkZXIgbWF0Y2hlcy4KICAtICoqY29udGFpbnMgKFN0cmluZykqKiA6IFRoZSB2YWx1ZSB0aGF0IHdpbGwgYmUgdXNlZCB0byBjaGVjayBpZiB0aGUgdmFsdWUgaXMgcHJlc2VudCBpbiB0aGUgdmFsdWUgb2YgdGhlIHJlc3BvbnNlIGhlYWRlci4KICAtICoqb25lT2YgKFN0cmluZ1tdLE51bWJlcltdLEJvb2xlYW5bXSkqKiA6IFRoZSB2YWx1ZSB0aGF0IHdpbGwgYmUgdXNlZCB0byBjaGVjayBvbmUgb2YgdGhlIHZhbHVlcyBpcyBtYXRjaGluZyB0aGUgdmFsdWUgb2YgdGhlIHJlc3BvbnNlIGhlYWRlci4KICAtICoqbGVuZ3RoIChOdW1iZXIpKiogOiBUaGUgbnVtYmVyIHRoYXQgd2lsbCBiZSB1c2VkIHRvIGNoZWNrIGlmIHRoZSB2YWx1ZSBvZiB0aGUgcmVzcG9uc2UgaGVhZGVyIGhhcyBhIGxlbmd0aCBvZiB0aGUgZGVmaW5lZCBudW1iZXIgb2YgY2hhcmFjdGVycy4KICAtICoqbWluTGVuZ3RoIChOdW1iZXIpKiogOiBUaGUgbnVtYmVyIHRoYXQgd2lsbCBiZSB1c2VkIHRvIGNoZWNrIGlmIHRoZSB2YWx1ZSBvZiB0aGUgcmVzcG9uc2UgaGVhZGVyIGhhcyBhIG1pbmltdW0gbGVuZ3RoIG9mIHRoZSBkZWZpbmVkIG51bWJlciBvZiBjaGFyYWN0ZXJzLgogIC0gKiptYXhMZW5ndGggKE51bWJlcikqKiA6IFRoZSBudW1iZXIgdGhhdCB3aWxsIGJlIHVzZWQgdG8gY2hlY2sgaWYgdGhlIHZhbHVlIG9mIHRoZSByZXNwb25zZSBoZWFkZXIgaGFzIGEgbWF4aW11bSBsZW5ndGggb2YgdGhlIGRlZmluZWQgbnVtYmVyIG9mIGNoYXJhY3RlcnMuCiAgLSAqKm5vdEV4aXN0IChCb29sZWFuKSoqIDogVGhlIGludmVyc2Ugb2YgdGhlIGtleSBjaGVjayB0aGF0IHZlcmlmeSBpZiB0aGUga2V5IGRvZXMgbm90IGV4aXN0IGluIHRoZSByZXNwb25zZSBoZWFkZXIuCiAgLSAqKmFzc2VydCAoU3RyaW5nKSoqIDogQSBjdXN0b20gUG9zdG1hbiBhc3NlcnRpb24gdG8gY2hlY2sgaWYgdGhlIHZhbHVlIGluIHRoZSByZXNwb25zZSBoZWFkZXIgbWF0Y2hlcyB3aXRoIHRoZSBwcm92aWRlZCBhc3NlcnRpb24gKGV4YW1wbGU6IGBub3QudG8uYmUubnVsbGApLgoKRm9yIG1vcmUgZGV0YWlscywgcmV2aWV3IHRoZSBbY29udGVudC10ZXN0cyBleGFtcGxlXShodHRwczovL2dpdGh1Yi5jb20vYXBpZGVjay1saWJyYXJpZXMvcG9ydG1hbi90cmVlL21haW4vZXhhbXBsZXMvdGVzdHN1aXRlLWNvbnRlbnQtdGVzdHMpLgoKIyMjIFBvcnRtYW4gLSBgZXh0ZW5kVGVzdHNgIHByb3BlcnRpZXMKCldoZW4geW91IG5lZWQgdG8gYWRkIGFkZGl0aW9uYWwgdGVzdHMgb3Igb3ZlcndyaXRlIHRoZSBQb3J0bWFuLWdlbmVyYXRlZCB0ZXN0LCB5b3UgY2FuIHVzZSB0aGUgYGV4dGVuZFRlc3RzYCB0byBkZWZpbmUgdGhlIHJhdyBQb3N0bWFuIHRlc3RzLgpBbnl0aGluZyBhZGRlZCBpbiB0aGUgYHRlc3RzYCBhcnJheSB3aWxsIGJlIGFkZGVkIHRvIHRoZSBQb3N0bWFuIHRlc3Qgc2NyaXB0cy4KCiMjIyMgZXh0ZW5kVGVzdHMgb3B0aW9ucwoKLSAqKm9wZW5BcGlPcGVyYXRpb25JZCAoU3RyaW5nKSoqIDogUmVmZXJlbmNlcyB0byB0aGUgT3BlbkFQSSBvcGVyYXRpb25JZC4gKGV4YW1wbGU6IGBsZWFkc0FsbGApCi0gKipvcGVuQXBpT3BlcmF0aW9uSWRzIChBcnJheSkqKiA6IFJlZmVyZW5jZXMgdG8gYW4gYXJyYXkgb2YgT3BlbkFQSSBvcGVyYXRpb25JZHMsIGV4YW1wbGU6IGBbJ2xlYWRzQWxsJywgJ2NvbXBhbmllc0FsbCcsICdjb250YWN0c0FsbCddYAotICoqb3BlbkFwaU9wZXJhdGlvbiAoU3RyaW5nKSoqIDogUmVmZXJlbmNlcyB0byBhIGNvbWJpbmF0aW9uIG9mIHRoZSBPcGVuQVBJIG1ldGhvZCAmIHBhdGggKGV4YW1wbGU6IGBHRVQ6Oi9jcm0vbGVhZHNgKQotICoqZXhjbHVkZUZvck9wZXJhdGlvbnMgKEFycmF5IHwgb3B0aW9uYWwpKiogOiBSZWZlcmVuY2VzIHRvIE9wZW5BUEkgb3BlcmF0aW9ucyB0aGF0IHdpbGwgYmUgc2tpcHBlZCBmb3IgdGFyZ2V0aW5nLCBleGFtcGxlOiBgWyJsZWFkc0FkZCIsICJHRVQ6Oi9jcm0vbGVhZHMve2lkfSJdYAoKLSAqKnRlc3RzIChBcnJheSkqKiA6IEFycmF5IG9mIGFkZGl0aW9uYWwgUG9zdG1hbiB0ZXN0IHNjcmlwdHMuICBWYWx1ZXMgY2FuIGJlIHRoZSBzY3JpcHQgY29udGVudCBvciBwYXRoIHRvIHRoZSBzY3JpcHQgZmlsZSAod2l0aCBgZmlsZTpgIHByZWZpeCkuCi0gKipvdmVyd3JpdGUgKEJvb2xlYW4gdHJ1ZS9mYWxzZSB8IERlZmF1bHQ6IGZhbHNlKSoqIDogUmVzZXRzIGFsbCBnZW5lcmF0ZVRlc3RzIGFuZCBvdmVyd3JpdGVzIHRoZW0gd2l0aCB0aGUgZGVmaW5lZCB0ZXN0cyBmcm9tCiAgdGhlIGB0ZXN0c2AgYXJyYXkuCi0gKiphcHBlbmQgKEJvb2xlYW4gdHJ1ZS9mYWxzZSB8IERlZmF1bHQ6IHRydWUpKiogOiBQbGFjZSB0aGUgdGVzdHMgYWZ0ZXIgKGFwcGVuZCkgb3IgYmVmb3JlIChwcmVwZW5kKSBhbGwgZ2VuZXJhdGVkIHRlc3RzLgoKPGhyPgoKIyMjIFBvcnRtYW4gLSBgYXNzaWduVmFyaWFibGVzYCBwcm9wZXJ0aWVzCgpUaGUgImFzc2lnblZhcmlhYmxlcyIgYWxsb3dzIHlvdSB0byBzZXQgUG9zdG1hbiBjb2xsZWN0aW9uIHZhcmlhYmxlcyBmb3IgZWFzaWVyIGF1dG9tYXRpb24uCgojIyMjIGFzc2lnblZhcmlhYmxlcyBvcHRpb25zCgotICoqb3BlbkFwaU9wZXJhdGlvbklkIChTdHJpbmcpKiogOiBSZWZlcmVuY2UgdG8gdGhlIE9wZW5BUEkgb3BlcmF0aW9uSWQgZm9yIHdoaWNoIHRoZSBQb3N0bWFuIHBtLmNvbGxlY3Rpb25WYXJpYWJsZXMgd2lsbCBiZSBzZXQuIChleGFtcGxlOiBgbGVhZHNBbGxgKQotICoqb3BlbkFwaU9wZXJhdGlvbklkcyAoQXJyYXkpKiogOiBSZWZlcmVuY2VzIHRvIGFuIGFycmF5IG9mIE9wZW5BUEkgb3BlcmF0aW9uSWRzLCBmb3Igd2hpY2ggdGhlIFBvc3RtYW4gcG0uY29sbGVjdGlvblZhcmlhYmxlcyB3aWxsIGJlIHNldC4gZXhhbXBsZTogYFsnbGVhZHNBbGwnLCAnY29tcGFuaWVzQWxsJywgJ2NvbnRhY3RzQWxsJ11gCi0gKipvcGVuQXBpT3BlcmF0aW9uIChTdHJpbmcpKiogOiBSZWZlcmVuY2UgdG8gdGhlIGNvbWJpbmF0aW9uIG9mIHRoZSBPcGVuQVBJIG1ldGhvZCAmIHBhdGgsIGZvciB3aGljaCB0aGUgUG9zdG1hbiBwbS5jb2xsZWN0aW9uVmFyaWFibGVzIHdpbGwgYmUgc2V0LiAoZXhhbXBsZTogYEdFVDo6L2NybS9sZWFkc2ApCi0gKipleGNsdWRlRm9yT3BlcmF0aW9ucyAoQXJyYXkgfCBvcHRpb25hbCkqKiA6IFJlZmVyZW5jZXMgdG8gT3BlbkFQSSBvcGVyYXRpb25zIHRoYXQgd2lsbCBiZSBza2lwcGVkIGZvciB0YXJnZXRpbmcsIGV4YW1wbGU6IGBbImxlYWRzQWRkIiwgIkdFVDo6L2NybS9sZWFkcy97aWR9Il1gCgotICoqY29sbGVjdGlvblZhcmlhYmxlcyAoQXJyYXkpKiogOiBBcnJheSBvZiBrZXkvdmFsdWUgcGFpcnMgdG8gc2V0IHRoZSBQb3N0bWFuIGNvbGxlY3Rpb24gdmFyaWFibGVzLgogIC0gKipyZXNwb25zZUJvZHlQcm9wIChTdHJpbmcpKiogOiBUaGUgcHJvcGVydHkgZm9yIHdoaWNoIHRoZSB2YWx1ZSB3aWxsIGJlIHRha2VuIGZyb20gdGhlIHJlc3BvbnNlIGJvZHkgYW5kIHNldCB0aGUgdmFsdWUgYXMgdGhlIHBtLmNvbGxlY3Rpb25WYXJpYWJsZXMgdmFsdWUuIFRvIHN0b3JlIHRoZSByb290IGxldmVsLCB1c2UgYC5gIGFzIGtleS4KICAtICoqcmVzcG9uc2VIZWFkZXJQcm9wIChTdHJpbmcpKiogOiBUaGUgcHJvcGVydHkgZm9yIHdoaWNoIHRoZSB2YWx1ZSB3aWxsIGJlIHRha2VuIGZyb20gdGhlIHJlc3BvbnNlIGhlYWRlciBhbmQgc2V0IHRoZSB2YWx1ZSBhcyB0aGUgcG0uY29sbGVjdGlvblZhcmlhYmxlcyB2YWx1ZS4KICAtICoqcmVxdWVzdEJvZHlQcm9wIChTdHJpbmcpKiogOiBUaGUgcHJvcGVydHkgZm9yIHdoaWNoIHRoZSB2YWx1ZSB3aWxsIGJlIHRha2VuIGZyb20gdGhlIHJlcXVlc3QgYm9keSBhbmQgc2V0IHRoZSB2YWx1ZSBhcyB0aGUgcG0uY29sbGVjdGlvblZhcmlhYmxlcyB2YWx1ZS4KICAtICoqdmFsdWUgKFN0cmluZykqKiA6IFRoZSBkZWZpbmVkIHZhbHVlIHRoYXQgd2lsbCBiZSBzZXQgYXMgdGhlIHBtLmNvbGxlY3Rpb25WYXJpYWJsZXMgdmFsdWUuIFRoZSB2YWx1ZSBjYW4gYmUgZ2VuZXJhdGVkIHVzaW5nIHRlbXBsYXRlIGV4cHJlc3Npb25zLiAgRm9yIHRoZSBmdWxsIGxpc3Qgb2YgdGVtcGxhdGUgZXhwcmVzc2lvbnMsIGNoZWNrIHRoZSBbQXNzaWduICYgT3ZlcndyaXRlIGV4YW1wbGVdKGh0dHBzOi8vZ2l0aHViLmNvbS9hcGlkZWNrLWxpYnJhcmllcy9wb3J0bWFuL3RyZWUvbWFpbi9leGFtcGxlcy90ZXN0c3VpdGUtYXNzaWduLW92ZXJ3cml0ZSN0ZW1wbGF0ZS1leHByZXNzaW9ucykKICAtICoqbmFtZSAoc3RyaW5nIE9QVElPTkFMIHwgIERlZmF1bHQ6IDxvcGVyYXRpb25JZD4uPHZhclByb3A+KSoqIDogVGhlIGRlc2lyZWQgbmFtZSB0aGF0IHdpbGwgYmUgdXNlZCB0byBhcyB0aGUgUG9zdG1hbiB2YXJpYWJsZSBuYW1lLiBJZiB0aGUgYG5hbWVgIGlzIG5vdCBwcm92aWRlZCwgUG9ydG1hbiB3aWxsIGdlbmVyYXRlIGEgdmFyaWFibGUgbmFtZSwgdXNpbmcgdGhlIGA8b3BlcmF0aW9uSWQ+Ljx2YXJQcm9wPmAuIFlvdSBjYW4gcGFzcyB5b3VyIG93biB0ZW1wbGF0ZSBleHByZXNzaW9ucywgdG8gZHluYW1pY2FsbHkgZ2VuZXJhdGUgdmFyaWFibGUgbmFtZXMuIFRoZSB0ZW1wbGF0ZSBjYW4gY29udGFpbiB0aGUgZm9sbG93aW5nIGR5bmFtaWMgZXhwcmVzc2lvbnM6IGA8b3BlcmF0aW9uSWQ+YCByZXN1bHRzIGluIHRoZSBPcGVuQVBJIG9wZXJhdGlvbiBJRCAoZXhhbXBsZSBgbGVhZHNBZGRgKSwgYDxwYXRoPmAgcmVzdWx0cyBpbiB0aGUgT3BlbkFQSSBvcGVyYXRpb24gSUQgKGV4YW1wbGUgYC9jcm0vbGVhZHNgKSwgYDxwYXRoUmVmPmAgcmVzdWx0cyBpbiB0aGUgUG9ydG1hbiBvcGVyYXRpb24gKGV4YW1wbGUgYFBPU1Q6Oi9jcm0vbGVhZHNfUE9TVGApLCBgPG1ldGhvZD5gIHJlc3VsdHMgaW4gdGhlIE9wZW5BUEkgbWV0aG9kIChleGFtcGxlIGBHRVRgKSwgYDxvcHNSZWY+YCByZXN1bHRzIGluIHRoZSBPcGVuQVBJIGBvcGVyYXRpb25JZGAgd2l0aCBhIGZhbGxiYWNrIHRvIHRoZSBgcGF0aFJlZmAgaW4gY2FzZSB0aGUgT3BlbkFQSSBkb2VzIG5vdCBjb250YWluIGFuIG9wZXJhdGlvbiBJRC4gRm9yIHRoZSBmdWxsIGxpc3Qgb2YgZHluYW1pYyBleHByZXNzaW9ucywgY2hlY2sgdGhlIFtBc3NpZ24gJiBPdmVyd3JpdGUgZXhhbXBsZV0oaHR0cHM6Ly9naXRodWIuY29tL2FwaWRlY2stbGlicmFyaWVzL3BvcnRtYW4vdHJlZS9tYWluL2V4YW1wbGVzL3Rlc3RzdWl0ZS1hc3NpZ24tb3ZlcndyaXRlI3RlbXBsYXRlLWV4cHJlc3Npb25zKS4KCkZvciBtb3JlIGRldGFpbHMsIHJldmlldyB0aGUgW0Fzc2lnbiB2YXJpYWJsZXMgZXhhbXBsZV0oaHR0cHM6Ly9naXRodWIuY29tL2FwaWRlY2stbGlicmFyaWVzL3BvcnRtYW4vdHJlZS9tYWluL2V4YW1wbGVzL3Rlc3RzdWl0ZS1hc3NpZ24tdmFyaWFibGVzKSBhbmQgW0Fzc2lnbiAmIE92ZXJ3cml0ZSBleGFtcGxlXShodHRwczovL2dpdGh1Yi5jb20vYXBpZGVjay1saWJyYXJpZXMvcG9ydG1hbi90cmVlL21haW4vZXhhbXBsZXMvdGVzdHN1aXRlLWFzc2lnbi1vdmVyd3JpdGUjdGVtcGxhdGUtZXhwcmVzc2lvbnMpLgoKPGhyPgoKIyMjIFBvcnRtYW4gLSBgb3ZlcndyaXRlc2AgcHJvcGVydGllcwoKVG8gZmFjaWxpdGF0ZSBhdXRvbWF0aW9uLCB5b3UgbWlnaHQgd2FudCB0byBtb2RpZnkgcHJvcGVydGllcyB3aXRoICJyYW5kb21pemVkIiBvciBzcGVjaWZpYyB2YWx1ZXMuIFRoZSBvdmVyd3JpdGVzIGFyZSBtYXBwZWQgYmFzZWQgb24gdGhlIE9wZW5BUEkgb3BlcmF0aW9uSWQgb3IgT3BlbkFQSSBPcGVyYXRpb24gcmVmZXJlbmNlLgoKIyMjIyBvdmVyd3JpdGVzIG9wdGlvbnMKCi0gKipvcGVuQXBpT3BlcmF0aW9uSWQgKFN0cmluZykqKiA6IFJlZmVyZW5jZSB0byB0aGUgT3BlbkFQSSBvcGVyYXRpb25JZCBmb3Igd2hpY2ggdGhlIFBvc3RtYW4gcmVxdWVzdCB3aWxsIGJlIG92ZXJ3cml0dGVuIG9yIGV4dGVuZGVkLiAoZXhhbXBsZTogYGxlYWRzQWxsYCkKLSAqKm9wZW5BcGlPcGVyYXRpb25JZHMgKEFycmF5KSoqIDogUmVmZXJlbmNlcyB0byBhbiBhcnJheSBvZiBPcGVuQVBJIG9wZXJhdGlvbklkcywgZm9yIHdoaWNoIHRoZSBQb3N0bWFuIHJlcXVlc3Qgd2lsbCBiZSBvdmVyd3JpdHRlbiBvciBleHRlbmRlZCAoZXhhbXBsZTogYFsnbGVhZHNBbGwnLCAnY29tcGFuaWVzQWxsJywgJ2NvbnRhY3RzQWxsJ11gKQotICoqb3BlbkFwaU9wZXJhdGlvbiAoU3RyaW5nKSoqIDogUmVmZXJlbmNlIHRvIGNvbWJpbmF0aW9uIG9mIHRoZSBPcGVuQVBJIG1ldGhvZCAmIHBhdGgsIGZvciB3aGljaCB0aGUgUG9zdG1hbiByZXF1ZXN0IHdpbGwgYmUgb3ZlcndyaXR0ZW4gb3IgZXh0ZW5kZWQgKGV4YW1wbGU6IGBHRVQ6Oi9jcm0vbGVhZHNgKQotICoqZXhjbHVkZUZvck9wZXJhdGlvbnMgKEFycmF5IHwgb3B0aW9uYWwpKiogOiBSZWZlcmVuY2VzIHRvIE9wZW5BUEkgb3BlcmF0aW9ucyB0aGF0IHdpbGwgYmUgc2tpcHBlZCBmb3IgdGFyZ2V0aW5nLiAoZXhhbXBsZTogYFsibGVhZHNBZGQiLCAiR0VUOjovY3JtL2xlYWRzL3tpZH0iXWApCgotICoqb3ZlcndyaXRlUmVxdWVzdEJhc2VVcmwgKE9iamVjdCkqKiA6CgogIEtleS92YWx1ZSBwYWlyIHRvIG92ZXJ3cml0ZSB0aGUgUG9zdG1hbiBSZXF1ZXN0IEJhc2UgVVJMLgoKICAtICoqdmFsdWUgKFN0cmluZykqKiA6IFRoZSB2YWx1ZSB0aGF0IHdpbGwgYmUgdXNlZCB0byBvdmVyd3JpdGUvZXh0ZW5kIHRoZSB2YWx1ZSBpbiB0aGUgcmVxdWVzdCBiYXNlIFVSTC4gKGV4YW1wbGU6IGBodHRwczovL2V4YW1wbGUuY29tYCBvciBge3tiYXNlVXJsfX1gKS4KICAtICoqb3ZlcndyaXRlIChCb29sZWFuIHRydWUvZmFsc2UgfCBEZWZhdWx0OiB0cnVlKSoqIDogT3ZlcndyaXRlcyB0aGUgcmVxdWVzdCBiYXNlIFVSTCB2YWx1ZSBPUiBhdHRhY2ggdGhlIHZhbHVlIHRvIHRoZSBvcmlnaW5hbCByZXF1ZXN0IGJhc2UgVVJMIHZhbHVlLgogIC0gKipyZW1vdmUgKEJvb2xlYW4gdHJ1ZS9mYWxzZSB8IERlZmF1bHQ6IGZhbHNlKSoqIDogUmVtb3ZlcyB0aGUgdGFyZ2V0ZWQgcmVxdWVzdCBiYXNlIFVSTCBmcm9tIFBvc3RtYW4uCgotICoqb3ZlcndyaXRlUmVxdWVzdFF1ZXJ5UGFyYW1zIChBcnJheSkqKiA6CgogIEFycmF5IG9mIGtleS92YWx1ZSBwYWlycyB0byBvdmVyd3JpdGUgaW4gdGhlIFBvc3RtYW4gUmVxdWVzdCBRdWVyeSBwYXJhbXMuCgogIC0gKiprZXkgKFN0cmluZykqKiA6IFRoZSBrZXkgdGhhdCB3aWxsIGJlIHRhcmdldGVkIGluIHRoZSByZXF1ZXN0IFF1ZXJ5IFBhcmFtIHRvIG92ZXJ3cml0ZS9leHRlbmQuIFN1cHBvcnRzIHdpbGRjYXJkICogdG8gbWF0Y2ggYW55IHNlcXVlbmNlIG9mIGNoYXJhY3RlcnMuIEZvciBleGFtcGxlLCBgZmlsdGVyWypdYCBtYXRjaGVzIGBmaWx0ZXJbMF1gLCBgZmlsdGVyWzFdYCwgZXRjLgogIC0gKip2YWx1ZSAoU3RyaW5nKSoqIDogVGhlIHZhbHVlIHRoYXQgd2lsbCBiZSB1c2VkIHRvIG92ZXJ3cml0ZS9leHRlbmQgdGhlIHZhbHVlIGluIHRoZSByZXF1ZXN0IFF1ZXJ5IFBhcmFtIE9SIHVzZSB0aGUgW1Bvc3RtYW4gRHluYW1pYyB2YXJpYWJsZXNdKGh0dHBzOi8vbGVhcm5pbmcuUG9zdG1hbi5jb20vZG9jcy93cml0aW5nLXNjcmlwdHMvc2NyaXB0LXJlZmVyZW5jZXMvdmFyaWFibGVzLWxpc3QvKSB0byB1c2UgZHluYW1pYyB2YWx1ZXMgbGlrZSBge3skZ3VpZH19YCBvciBge3skcmFuZG9tSW50fX1gLiBTdXBwb3J0cyBhbHNvIHRlbXBsYXRpbmcgdG8gZ2VuZXJhdGUgdmFyaWFibGUgbmFtZXMuIFRoZSB0ZW1wbGF0ZSBjYW4gY29udGFpbiB0aGUgZm9sbG93aW5nIGR5bmFtaWMgZXhwcmVzc2lvbnM6IGA8b3BlcmF0aW9uSWQ+YCByZXN1bHRzIGluIHRoZSBPcGVuQVBJIG9wZXJhdGlvbiBJRCAoZXhhbXBsZSBgbGVhZHNBZGRgKSwgYDxwYXRoPmAgcmVzdWx0cyBpbiB0aGUgT3BlbkFQSSBvcGVyYXRpb24gSUQgKGV4YW1wbGUgYC9jcm0vbGVhZHNgKSwgYDxwYXRoUmVmPmAgcmVzdWx0cyBpbiB0aGUgUG9ydG1hbiBvcGVyYXRpb24gKGV4YW1wbGUgYFBPU1Q6Oi9jcm0vbGVhZHNfUE9TVGApLCBgPG1ldGhvZD5gIHJlc3VsdHMgaW4gdGhlIE9wZW5BUEkgbWV0aG9kIChleGFtcGxlIGBHRVRgKSwgYDxvcHNSZWY+YCByZXN1bHRzIGluIHRoZSBPcGVuQVBJIGBvcGVyYXRpb25JZGAgd2l0aCBhIGZhbGxiYWNrIHRvIHRoZSBgcGF0aFJlZmAgaW4gY2FzZSB0aGUgT3BlbkFQSSBkb2VzIG5vdCBjb250YWluIGFuIG9wZXJhdGlvbiBJRC4gRm9yIHRoZSBmdWxsIGxpc3Qgb2YgZHluYW1pYyBleHByZXNzaW9ucywgY2hlY2sgdGhlIFtBc3NpZ24gJiBPdmVyd3JpdGUgZXhhbXBsZV0oaHR0cHM6Ly9naXRodWIuY29tL2FwaWRlY2stbGlicmFyaWVzL3BvcnRtYW4vdHJlZS9tYWluL2V4YW1wbGVzL3Rlc3RzdWl0ZS1hc3NpZ24tb3ZlcndyaXRlI3RlbXBsYXRlLWV4cHJlc3Npb25zKS4KICAtICoqb3ZlcndyaXRlIChCb29sZWFuIHRydWUvZmFsc2UgfCBEZWZhdWx0OiB0cnVlKSoqIDogT3ZlcndyaXRlcyB0aGUgcmVxdWVzdCBxdWVyeSBwYXJhbSB2YWx1ZSBPUiBhdHRhY2ggdGhlIHZhbHVlIHRvIHRoZSBvcmlnaW5hbCByZXF1ZXN0IHF1ZXJ5IHBhcmFtIHZhbHVlLgogIC0gKipkaXNhYmxlIChCb29sZWFuIHRydWUvZmFsc2UgfCBEZWZhdWx0OiBmYWxzZSkqKiA6IERpc2FibGVzIHRoZSByZXF1ZXN0IHF1ZXJ5IHBhcmFtIGluIFBvc3RtYW4uCiAgLSAqKnJlbW92ZSAoQm9vbGVhbiB0cnVlL2ZhbHNlIHwgRGVmYXVsdDogZmFsc2UpKiogOiBSZW1vdmVzIHRoZSB0YXJnZXRlZCByZXF1ZXN0IHF1ZXJ5IHBhcmFtIGZyb20gUG9zdG1hbi4KICAtICoqaW5zZXJ0IChCb29sZWFuIHRydWUvZmFsc2UgfCBEZWZhdWx0OiB0cnVlKSoqIDogSW5zZXJ0IGFkZGl0aW9uYWwgdGhlIHJlcXVlc3QgcXVlcnkgcGFyYW0gaW4gUG9zdG1hbiB0aGF0IGFyZSBub3QgcHJlc2VudCBpbiBPcGVuQVBJLgogIC0gKipkZXNjcmlwdGlvbiAoU3RyaW5nKSoqIDogT3ZlcndyaXRlcyB0aGUgcmVxdWVzdCBxdWVyeSBwYXJhbSBkZXNjcmlwdGlvbiBpbiBQb3N0bWFuLgoKLSAqKm92ZXJ3cml0ZVJlcXVlc3RQYXRoVmFyaWFibGVzIChBcnJheSkqKiA6CgogIEFycmF5IG9mIGtleS92YWx1ZSBwYWlycyB0byBvdmVyd3JpdGUgaW4gdGhlIFBvc3RtYW4gUmVxdWVzdCBQYXRoIFZhcmlhYmxlcy4KCiAgLSAqKmtleSAoU3RyaW5nKSoqIDogVGhlIGtleSB0aGF0IHdpbGwgYmUgdGFyZ2V0ZWQgaW4gdGhlIHJlcXVlc3QgUGF0aCB2YXJpYWJsZXMgdG8gb3ZlcndyaXRlL2V4dGVuZC4KICAtICoqdmFsdWUgKFN0cmluZykqKiA6IFRoZSB2YWx1ZSB0aGF0IHdpbGwgYmUgdXNlZCB0byBvdmVyd3JpdGUvZXh0ZW5kIHRoZSB2YWx1ZSBpbiB0aGUgcmVxdWVzdCBwYXRoIHZhcmlhYmxlIE9SIHVzZSB0aGUgW1Bvc3RtYW4gRHluYW1pYyB2YXJpYWJsZXNdKGh0dHBzOi8vbGVhcm5pbmcuUG9zdG1hbi5jb20vZG9jcy93cml0aW5nLXNjcmlwdHMvc2NyaXB0LXJlZmVyZW5jZXMvdmFyaWFibGVzLWxpc3QvKSB0byB1c2UgZHluYW1pYyB2YWx1ZXMgbGlrZSBge3skZ3VpZH19YCBvciBge3skcmFuZG9tSW50fX1gLiBTdXBwb3J0cyBhbHNvIHRlbXBsYXRpbmcgdG8gZ2VuZXJhdGUgdmFyaWFibGUgbmFtZXMuIFRoZSB0ZW1wbGF0ZSBjYW4gY29udGFpbiB0aGUgZm9sbG93aW5nIGR5bmFtaWMgZXhwcmVzc2lvbnM6IGA8b3BlcmF0aW9uSWQ+YCByZXN1bHRzIGluIHRoZSBPcGVuQVBJIG9wZXJhdGlvbiBJRCAoZXhhbXBsZSBgbGVhZHNBZGRgKSwgYDxwYXRoPmAgcmVzdWx0cyBpbiB0aGUgT3BlbkFQSSBvcGVyYXRpb24gSUQgKGV4YW1wbGUgYC9jcm0vbGVhZHNgKSwgYDxwYXRoUmVmPmAgcmVzdWx0cyBpbiB0aGUgUG9ydG1hbiBvcGVyYXRpb24gKGV4YW1wbGUgYFBPU1Q6Oi9jcm0vbGVhZHNfUE9TVGApLCBgPG1ldGhvZD5gIHJlc3VsdHMgaW4gdGhlIE9wZW5BUEkgbWV0aG9kIChleGFtcGxlIGBHRVRgKSwgYDxvcHNSZWY+YCByZXN1bHRzIGluIHRoZSBPcGVuQVBJIGBvcGVyYXRpb25JZGAgd2l0aCBhIGZhbGxiYWNrIHRvIHRoZSBgcGF0aFJlZmAgaW4gY2FzZSB0aGUgT3BlbkFQSSBkb2VzIG5vdCBjb250YWluIGFuIG9wZXJhdGlvbiBJRC4gRm9yIHRoZSBmdWxsIGxpc3Qgb2YgZHluYW1pYyBleHByZXNzaW9ucywgY2hlY2sgdGhlIFtBc3NpZ24gJiBPdmVyd3JpdGUgZXhhbXBsZV0oaHR0cHM6Ly9naXRodWIuY29tL2FwaWRlY2stbGlicmFyaWVzL3BvcnRtYW4vdHJlZS9tYWluL2V4YW1wbGVzL3Rlc3RzdWl0ZS1hc3NpZ24tb3ZlcndyaXRlI3RlbXBsYXRlLWV4cHJlc3Npb25zKS4KICAtICoqb3ZlcndyaXRlIChCb29sZWFuIHRydWUvZmFsc2UgfCBEZWZhdWx0OiB0cnVlKSoqIDogT3ZlcndyaXRlcyB0aGUgcmVxdWVzdCBwYXRoIHZhcmlhYmxlIHZhbHVlIE9SIGF0dGFjaGVzIHRoZSB2YWx1ZSB0byB0aGUgb3JpZ2luYWwgcmVxdWVzdCBQYXRoIHZhcmlhYmxlIHZhbHVlLgogIC0gKipyZW1vdmUgKEJvb2xlYW4gdHJ1ZS9mYWxzZSB8IERlZmF1bHQ6IGZhbHNlKSoqIDogUmVtb3ZlcyB0aGUgdGFyZ2V0ZWQgcmVxdWVzdCBwYXRoIHZhcmlhYmxlIGZyb20gUG9zdG1hbi4KICAtICoqaW5zZXJ0IChCb29sZWFuIHRydWUvZmFsc2UgfCBEZWZhdWx0OiB0cnVlKSoqIDogSW5zZXJ0IGFkZGl0aW9uYWwgdGhlIHJlcXVlc3QgcGF0aCB2YXJpYWJsZSBpbiBQb3N0bWFuIHRoYXQgYXJlIG5vdCBwcmVzZW50IGluIE9wZW5BUEkuCiAgLSAqKmRlc2NyaXB0aW9uIChTdHJpbmcpKiogOiBPcHRpb25hbCwgT3ZlcndyaXRlcyB0aGUgcmVxdWVzdCBwYXRoIHZhcmlhYmxlIGRlc2NyaXB0aW9uIGluIFBvc3RtYW4uCgotICoqb3ZlcndyaXRlUmVxdWVzdEhlYWRlcnMgKEFycmF5KSoqIDoKCiAgQXJyYXkgb2Yga2V5L3ZhbHVlIHBhaXJzIHRvIG92ZXJ3cml0ZSBpbiB0aGUgUG9zdG1hbiBSZXF1ZXN0IEhlYWRlcnMuCgogIC0gKiprZXkgKFN0cmluZykqKiA6IFRoZSBrZXkgdGhhdCB3aWxsIGJlIHRhcmdldGVkIGluIHRoZSByZXF1ZXN0IEhlYWRlcnMgdG8gb3ZlcndyaXRlL2V4dGVuZC4KICAtICoqdmFsdWUgKFN0cmluZykqKiA6IFRoZSB2YWx1ZSB0aGF0IHdpbGwgYmUgdXNlZCB0byBvdmVyd3JpdGUvZXh0ZW5kIHRoZSB2YWx1ZSBpbiB0aGUgcmVxdWVzdCBoZWFkZXJzIE9SIHVzZSB0aGUgW1Bvc3RtYW4gRHluYW1pYyB2YXJpYWJsZXNdKGh0dHBzOi8vbGVhcm5pbmcuUG9zdG1hbi5jb20vZG9jcy93cml0aW5nLXNjcmlwdHMvc2NyaXB0LXJlZmVyZW5jZXMvdmFyaWFibGVzLWxpc3QvKSB0byB1c2UgZHluYW1pYyB2YWx1ZXMgbGlrZSBge3skZ3VpZH19YCBvciBge3skcmFuZG9tSW50fX1gLiBTdXBwb3J0cyBhbHNvIHRlbXBsYXRpbmcgdG8gZ2VuZXJhdGUgdmFyaWFibGUgbmFtZXMuIFRoZSB0ZW1wbGF0ZSBjYW4gY29udGFpbiB0aGUgZm9sbG93aW5nIGR5bmFtaWMgZXhwcmVzc2lvbnM6IGA8b3BlcmF0aW9uSWQ+YCByZXN1bHRzIGluIHRoZSBPcGVuQVBJIG9wZXJhdGlvbiBJRCAoZXhhbXBsZSBgbGVhZHNBZGRgKSwgYDxwYXRoPmAgcmVzdWx0cyBpbiB0aGUgT3BlbkFQSSBvcGVyYXRpb24gSUQgKGV4YW1wbGUgYC9jcm0vbGVhZHNgKSwgYDxwYXRoUmVmPmAgcmVzdWx0cyBpbiB0aGUgUG9ydG1hbiBvcGVyYXRpb24gKGV4YW1wbGUgYFBPU1Q6Oi9jcm0vbGVhZHNfUE9TVGApLCBgPG1ldGhvZD5gIHJlc3VsdHMgaW4gdGhlIE9wZW5BUEkgbWV0aG9kIChleGFtcGxlIGBHRVRgKSwgYDxvcHNSZWY+YCByZXN1bHRzIGluIHRoZSBPcGVuQVBJIGBvcGVyYXRpb25JZGAgd2l0aCBhIGZhbGxiYWNrIHRvIHRoZSBgcGF0aFJlZmAgaW4gY2FzZSB0aGUgT3BlbkFQSSBkb2VzIG5vdCBjb250YWluIGFuIG9wZXJhdGlvbiBJRC4gRm9yIHRoZSBmdWxsIGxpc3Qgb2YgZHluYW1pYyBleHByZXNzaW9ucywgY2hlY2sgdGhlIFtBc3NpZ24gJiBPdmVyd3JpdGUgZXhhbXBsZV0oaHR0cHM6Ly9naXRodWIuY29tL2FwaWRlY2stbGlicmFyaWVzL3BvcnRtYW4vdHJlZS9tYWluL2V4YW1wbGVzL3Rlc3RzdWl0ZS1hc3NpZ24tb3ZlcndyaXRlI3RlbXBsYXRlLWV4cHJlc3Npb25zKS4KICAtICoqb3ZlcndyaXRlIChCb29sZWFuIHRydWUvZmFsc2UgfCBEZWZhdWx0OiB0cnVlKSoqIDogT3ZlcndyaXRlcyB0aGUgcmVxdWVzdCBoZWFkZXIgdmFsdWUgT1IgYXR0YWNoZXMgdGhlIHZhbHVlIHRvIHRoZSBvcmlnaW5hbCByZXF1ZXN0IGhlYWRlciB2YWx1ZS4KICAtICoqZGlzYWJsZSAoQm9vbGVhbiB0cnVlL2ZhbHNlIHwgRGVmYXVsdDogZmFsc2UpKiogOiBEaXNhYmxlcyB0aGUgcmVxdWVzdCBoZWFkZXIgaW4gUG9zdG1hbi4KICAtICoqcmVtb3ZlIChCb29sZWFuIHRydWUvZmFsc2UgfCBEZWZhdWx0OiBmYWxzZSkqKiA6IFJlbW92ZXMgdGhlIHRhcmdldGVkIHJlcXVlc3QgaGVhZGVyIGZyb20gUG9zdG1hbi4KICAtICoqaW5zZXJ0IChCb29sZWFuIHRydWUvZmFsc2UgfCBEZWZhdWx0OiB0cnVlKSoqIDogSW5zZXJ0IHRoZSBhZGRpdGlvbmFsIHJlcXVlc3QgaGVhZGVyIGluIFBvc3RtYW4gdGhhdCBhcmUgbm90IHByZXNlbnQgaW4gT3BlbkFQSS4KICAtICoqZGVzY3JpcHRpb24gKFN0cmluZykqKiA6IE92ZXJ3cml0ZXMgdGhlIHJlcXVlc3QgaGVhZGVyIGRlc2NyaXB0aW9uIGluIFBvc3RtYW4uCgotICoqb3ZlcndyaXRlUmVxdWVzdEJvZHkgKEFycmF5KSoqIDoKCiAgQXJyYXkgb2Yga2V5L3ZhbHVlIHBhaXJzIHRvIG92ZXJ3cml0ZSBpbiB0aGUgUG9zdG1hbiBSZXF1ZXN0IEJvZHkuCgogICoqQXBwbGljYWJsZSBmb3IgcmVxdWVzdCBib2R5IHR5cGVzOiBKU09OL2Zvcm0tZGF0YS94LXd3dy1mb3JtLXVybGVuY29kZWQqKgogIC0gKiprZXkgKFN0cmluZykqKiA6IFRoZSBrZXkgdGhhdCB3aWxsIGJlIHRhcmdldGVkIGluIHRoZSByZXF1ZXN0IGJvZHkgdG8gb3ZlcndyaXRlL2V4dGVuZC4gVXNlIHRoZSBgLmAgbm90YXRpb24gdG8gdGFyZ2V0IG5lc3RlZCBwcm9wZXJ0aWVzLiBUbyB0YXJnZXQgdGhlIHJvb3QgbGV2ZWwsIHVzZSBgLmAgYXMga2V5LgogIC0gKip2YWx1ZSAoQW55KSoqIDogVGhlIHZhbHVlIHRoYXQgd2lsbCBiZSB1c2VkIHRvIG92ZXJ3cml0ZS9leHRlbmQgdGhlIGtleSBpbiB0aGUgcmVxdWVzdCBib2R5IE9SIHVzZSB0aGUgW1Bvc3RtYW4gRHluYW1pYyB2YXJpYWJsZXNdKGh0dHBzOi8vbGVhcm5pbmcuUG9zdG1hbi5jb20vZG9jcy93cml0aW5nLXNjcmlwdHMvc2NyaXB0LXJlZmVyZW5jZXMvdmFyaWFibGVzLWxpc3QvKSB0byB1c2UgZHluYW1pYyB2YWx1ZXMgbGlrZSBge3skZ3VpZH19YCBvciBge3skcmFuZG9tSW50fX1gLiBUaGUgdmFsdWUgY2FuIGJlIGEgdGV4dC9udW1iZXIvYm9vbGVhbi9hcnJheS9vYmplY3Qgb3IgUG9zdG1hbiB2YXJpYWJsZSAodG8gcGFzcyB0aGUgUG9zdG1hbiB2YXJpYWJsZSBhcyB0eXBlIGJvb2xlYW4gb3IgbnVtYmVyLCB1c2UgYHt7e3ZhcmlhYmxlTmFtZX19fWAgc3Vycm91bmRlZCBieSAzeCB7e3sgYW5kIDN4IH19fSkuIFN1cHBvcnRzIGFsc28gdGVtcGxhdGluZyB0byBnZW5lcmF0ZSB2YXJpYWJsZSBuYW1lcy4gVGhlIHRlbXBsYXRlIGNhbiBjb250YWluIHRoZSBmb2xsb3dpbmcgZHluYW1pYyBleHByZXNzaW9uczogYDxvcGVyYXRpb25JZD5gIHJlc3VsdHMgaW4gdGhlIE9wZW5BUEkgb3BlcmF0aW9uIElEIChleGFtcGxlIGBsZWFkc0FkZGApLCBgPHBhdGg+YCByZXN1bHRzIGluIHRoZSBPcGVuQVBJIG9wZXJhdGlvbiBJRCAoZXhhbXBsZSBgL2NybS9sZWFkc2ApLCBgPHBhdGhSZWY+YCByZXN1bHRzIGluIHRoZSBQb3J0bWFuIG9wZXJhdGlvbiAoZXhhbXBsZSBgUE9TVDo6L2NybS9sZWFkc19QT1NUYCksIGA8bWV0aG9kPmAgcmVzdWx0cyBpbiB0aGUgT3BlbkFQSSBtZXRob2QgKGV4YW1wbGUgYEdFVGApLCBgPG9wc1JlZj5gIHJlc3VsdHMgaW4gdGhlIE9wZW5BUEkgYG9wZXJhdGlvbklkYCB3aXRoIGEgZmFsbGJhY2sgdG8gdGhlIGBwYXRoUmVmYCBpbiBjYXNlIHRoZSBPcGVuQVBJIGRvZXMgbm90IGNvbnRhaW4gYW4gb3BlcmF0aW9uIElELiBGb3IgdGhlIGZ1bGwgbGlzdCBvZiBkeW5hbWljIGV4cHJlc3Npb25zLCBjaGVjayB0aGUgW0Fzc2lnbiAmIE92ZXJ3cml0ZSBleGFtcGxlXShodHRwczovL2dpdGh1Yi5jb20vYXBpZGVjay1saWJyYXJpZXMvcG9ydG1hbi90cmVlL21haW4vZXhhbXBsZXMvdGVzdHN1aXRlLWFzc2lnbi1vdmVyd3JpdGUjdGVtcGxhdGUtZXhwcmVzc2lvbnMpLgogIC0gKipvdmVyd3JpdGUgKEJvb2xlYW4gdHJ1ZS9mYWxzZSB8IERlZmF1bHQ6IHRydWUpKiogOiBPdmVyd3JpdGVzIHRoZSByZXF1ZXN0IGJvZHkgdmFsdWUgT1IgYXR0YWNoZXMgdGhlIHZhbHVlIHRvIHRoZSBvcmlnaW5hbCByZXF1ZXN0IGJvZHkgdmFsdWUuCiAgLSAqKnJlbW92ZSAoQm9vbGVhbiB0cnVlL2ZhbHNlIHwgRGVmYXVsdDogZmFsc2UpKiogOiBSZW1vdmVzIHRoZSByZXF1ZXN0IGJvZHkgcHJvcGVydHksIGluY2x1ZGluZyB0aGUgdmFsdWUuCgogICoqQXBwbGljYWJsZSBmb3IgcmVxdWVzdCBib2R5IHR5cGVzOiBmb3JtLWRhdGEveC13d3ctZm9ybS11cmxlbmNvZGVkKioKICAtICoqaW5zZXJ0IChCb29sZWFuIHRydWUvZmFsc2UgfCBEZWZhdWx0OiB0cnVlKSoqIDogSW5zZXJ0IHRoZSBhZGRpdGlvbmFsIHJlcXVlc3QgZm9ybSBrZXkvdmFsdWUgaW4gUG9zdG1hbiB0aGF0IGFyZSBub3QgcHJlc2VudCBpbiBPcGVuQVBJLgogIC0gKipkZXNjcmlwdGlvbiAoU3RyaW5nKSoqIDogT3ZlcndyaXRlcyB0aGUgcmVxdWVzdCBmb3JtIGRhdGEgZGVzY3JpcHRpb24gaW4gUG9zdG1hbi4KCi0gKipvdmVyd3JpdGVSZXF1ZXN0U2VjdXJpdHkgKE9iamVjdCkqKiA6CgogIEEgUG9zdG1hbiBSZXF1ZXN0QXV0aERlZmluaXRpb24gb2JqZWN0IHRoYXQgd2lsbCBiZSBhcHBsaWVkIHRvIHRoZSByZXF1ZXN0LlRoZSBzZWN1cml0eSBvdmVyd3JpdGVzIHByb3ZpZGVzIGEgbnVtYmVyIG9mIHNlY3VyaXR5IHR5cGVzOgoKICAtICoqcmVtb3ZlIChCb29sZWFuIHRydWUvZmFsc2UgfCBEZWZhdWx0OiBmYWxzZSkqKiA6IFVuc2V0cyB0aGUgQXV0aG9yaXphdGlvbiB0eXBlIGluIFBvc3RtYW4uCgogIC0gKiphcGlLZXkqKjogVGhlIEFQSSBrZXkgYXV0aCB3aWxsIHNlbmQgYSBrZXktdmFsdWUgcGFpciB0byB0aGUgQVBJIGVpdGhlciBpbiB0aGUgcmVxdWVzdCBoZWFkZXJzIG9yIHF1ZXJ5IHBhcmFtZXRlcnMuCiAgICAtICoqdmFsdWUgKFN0cmluZykqKiA6IFRoZSB2YWx1ZSB0aGF0IHdpbGwgYmUgaW5zZXJ0ZWQgYXMgdGhlIFBvc3RtYW4gYXBpS2V5IHZhbHVlLiBJdCBjYW4gYmUgYSBwbGFpbiB2YWx1ZSBvciBhIFBvc3RtYW4gdmFyaWFibGUuCiAgICAtICoqa2V5IChTdHJpbmcgfCBvcHRpb25hbCkqKiA6IFRoZSAia2V5IiB2YWx1ZSB0aGF0IHdpbGwgYmUgaW5zZXJ0ZWQgaW4gdGhlIFBvc3RtYW4gYXBpS2V5IGtleSBmaWVsZC4gSXQgY2FuIGJlIGEgcGxhaW4gdmFsdWUgb3IgYSBQb3N0bWFuIHZhcmlhYmxlLgogICAgLSAqKmluIChTdHJpbmcgfCBvcHRpb25hbCkqKiA6IFRoZSAiaW4iIHZhbHVlIHRoYXQgZGVmaW5lcyB3aGVyZSB0aGUgQXBpIEtleSB3aWxsIGJlIGFkZGVkIGluIHRoZSBQb3N0bWFuIHJlcXVlc3QgSGVhZGVyIG9yIFF1ZXJ5IHBhcmFtcy4gUG9zdG1hbiBzdXBwb3J0cyBgaGVhZGVyYCBmb3IgIkhlYWRlciIgb3IgYHF1ZXJ5YCBmb3IgIlF1ZXJ5IFBhcmFtcyIuCgogIGBgYGpzb24KICAib3ZlcndyaXRlUmVxdWVzdFNlY3VyaXR5IjogewogICAgICAgICJhcGlLZXkiOiB7CiAgICAgICAgICAidmFsdWUiOiAie3thcGlLZXl9fSIKICAgICAgICB9CiAgICAgIH0KICBgYGAKCiAgLSAqKmJlYXJlcioqOiBUaGUgYmVhcmVyIHRva2VucyBhbGxvdyByZXF1ZXN0cyB0byBhdXRoZW50aWNhdGUgdXNpbmcgYW4gYWNjZXNzIGtleSwgc3VjaCBhcyBhIEpTT04gV2ViIFRva2VuIChKV1QpLgogICAgLSAqKnRva2VuIChTdHJpbmcpKiogOiBUaGUgInRva2VuIiB0aGF0IHdpbGwgYmUgaW5zZXJ0ZWQgYXMgdGhlIFBvc3RtYW4gYmVhcmVyIHRva2VuIHZhbHVlLiBJdCBjYW4gYmUgYSBwbGFpbiB2YWx1ZSBvciBhIFBvc3RtYW4gdmFyaWFibGUuCgogIGBgYGpzb24KICAib3ZlcndyaXRlUmVxdWVzdFNlY3VyaXR5IjogewogICAgICAgICJiZWFyZXIiOiB7CiAgICAgICAgICAidG9rZW4iOiAie3tiZWFyZXJUb2tlbn19IgogICAgICAgIH0KICAgICAgfQogIGBgYAoKICAtICoqYmFzaWMqKjogQmFzaWMgYXV0aGVudGljYXRpb24gaW52b2x2ZXMgc2VuZGluZyBhIHZlcmlmaWVkIHVzZXJuYW1lIGFuZCBwYXNzd29yZCB3aXRoIHlvdXIgcmVxdWVzdC4KICAgIC0gKip1c2VybmFtZSAoU3RyaW5nKSoqIDogVGhlIHVzZXJuYW1lIHRoYXQgd2lsbCBiZSBpbnNlcnRlZCBhcyB0aGUgYmFzaWMgYXV0aGVudGljYXRpb24gdXNlcm5hbWUgdmFsdWUKICAgIC0gKipwYXNzd29yZCAoU3RyaW5nKSoqIDogVGhlIHBhc3N3b3JkIHRoYXQgd2lsbCBiZSBpbnNlcnRlZCBhcyB0aGUgYmFzaWMgYXV0aGVudGljYXRpb24gcGFzc3dvcmQgdmFsdWUKICAKICBgYGBqc29uCiAgIm92ZXJ3cml0ZVJlcXVlc3RTZWN1cml0eSI6IHsKICAgICAgICAiYmFzaWMiOiB7CiAgICAgICAgICAidXNlcm5hbWUiOiAie3t1c2VybmFtZX19IiwKICAgICAgICAgICJwYXNzd29yZCI6ICJ7e3Bhc3N3b3JkfX0iLAogICAgICAgIH0KICAgICAgfQogIGBgYAogIAogIC0gKipQb3N0bWFuIHNlY3VyaXR5IG9wdGlvbnMqKjogT3ZlcndyaXRlL0luc2VydCBQb3N0bWFuIGF1dGhvcml6YXRpb24gc2V0dGluZ3MuCiAgICAtICoqUG9zdG1hbiBUeXBlIChBcnJheSkqKiA6IFRoZSBQb3N0bWFuIGF1dGhvcml6YXRpb24gb3B0aW9uIHR5cGUuIFN1cHBvcnRlZCB0eXBlcyBhcmU6IGBhd3N2NGAsIGBkaWdlc3RgLCBgZWRnZWdyaWRgLCBgbnRsbWAsIGBvYXV0aDFgLCBgb2F1dGgyYAogICAgICAtICoqQXR0cmlidXRlcyoqIDoga2V5L3ZhbHVlL3R5cGUgYXMgZGVmaW5lZCBpbiBQb3N0bWFuICh0aGUgZWFzaWVzdCB3YXkgdG8gZGVmaW5lIGl0LCBpcyB0byBzZXQgaXQgbWFudWFsbHkgaW4gUG9zdG1hbiwgZXhwb3J0IHRoZSBjb2xsZWN0aW9uIGFuZCBleHRyYWN0IHRoZSBtYXRjaGluZyB2YWx1ZXMgZnJvbSB0aGUgSlNPTiBmaWxlKS4KCkZvciBtb3JlIGRldGFpbHMsIHJldmlldyB0aGUgW092ZXJ3cml0ZXMgZXhhbXBsZV0oaHR0cHM6Ly9naXRodWIuY29tL2FwaWRlY2stbGlicmFyaWVzL3BvcnRtYW4vdHJlZS9tYWluL2V4YW1wbGVzL3Rlc3RzdWl0ZS1vdmVyd3JpdGVzKSBhbmQgW0Fzc2lnbiAmIE92ZXJ3cml0ZSBleGFtcGxlXShodHRwczovL2dpdGh1Yi5jb20vYXBpZGVjay1saWJyYXJpZXMvcG9ydG1hbi90cmVlL21haW4vZXhhbXBsZXMvdGVzdHN1aXRlLWFzc2lnbi1vdmVyd3JpdGUjdGVtcGxhdGUtZXhwcmVzc2lvbnMpLgoKPGhyPgoKIyMjIFBvcnRtYW4gLSBgZnV6emluZ2AgcHJvcGVydGllcyAtIEJFVEEg8J+PlwoKTk9USUNFOiBUaGlzIGZlYXR1cmUgaXMgY29uc2lkZXJlZCBCRVRBLCBzaW5jZSB3ZSBhcmUgaW52ZXN0aWdhdGluZyBhZGRpdGlvbmFsIGZ1enppbmcgY2FwYWJpbGl0aWVzLgoKPiBGdXp6aW5nIG9yIGZ1enogdGVzdGluZyBpcyBhbiBhdXRvbWF0ZWQgc29mdHdhcmUgdGVzdGluZyB0ZWNobmlxdWUgdGhhdCBpbnZvbHZlcyBwcm92aWRpbmcgaW52YWxpZCwgdW5leHBlY3RlZCwgb3IgcmFuZG9tIGRhdGEgYXMgaW5wdXRzIHRvIGEgY29tcHV0ZXIgcHJvZ3JhbSAoYSBSRVNUIEFQSSBpbiB0aGUgY2FzZSBvZiBQb3J0bWFuKS4KCkZ1enppbmcgY2hhbmdlcyB0aGUgcmVxdWVzdHMgKGJvZHksIHF1ZXJ5IHBhcmFtcywgLi4uICkgdG8gdW5leHBlY3RlZCB2YWx1ZXMgaW4gYW4gZWZmb3J0IHRvIGNhdXNlIHVuZXhwZWN0ZWQgYmVoYXZpb3IgYW5kIGVycm9ycyBpbiB0aGUgQVBJIHJlc3BvbnNlLgpGb3IgUG9ydG1hbiwgd2Ugd2FudCB0byBwcm92aWRlIGEgc2ltcGxlIGZvcm0gb2YgRnV6emluZywgd2l0aCB0aGUgZ29hbCB0byB0cmlnZ2VyIHZhbGlkYXRpb24vZXJyb3IgcmVzcG9uc2VzLCB3aGljaCBjYW4gYmUgY29udHJhY3QgdGVzdGVkLgpUaGUgYXV0b21hdGljIGZ1enppbmcgaXMgYmFzZWQgb24gdGhlIE9wZW5BUEkgcmVxdWVzdCBwcm9wZXJ0aWVzLCB3aGVyZSBmb3IgZWFjaCBmdXp6aW5nIHZhcmlhdGlvbiBhIG5ldyBQb3N0bWFuIHJlcXVlc3Qgd2lsbCBiZSBnZW5lcmF0ZWQsIHdpdGggb3B0aW9uYWwgY29udHJhY3QgdGVzdHMuCgpUaGUgRnV6emluZyBvcHRpb25zIGRlc2NyaWJlIHRoZSBjb25maWd1cmF0aW9uIHNldHRpbmcgZm9yIGF2YWlsYWJsZSBPcGVuQVBJIGZ1enppbmcgdmFyaWF0aW9ucy4KClJFTUFSS1M6CgotIFtQb3N0bWFuIER5bmFtaWMgdmFyaWFibGVzXShodHRwczovL2xlYXJuaW5nLlBvc3RtYW4uY29tL2RvY3Mvd3JpdGluZy1zY3JpcHRzL3NjcmlwdC1yZWZlcmVuY2VzL3ZhcmlhYmxlcy1saXN0LykgYXJlIHJlbmRlcmVkIGJlZm9yZSBiZWluZyBmdXp6ZWQuCi0gUmVndWxhciBQb3N0bWFuIHZhcmlhYmxlcyBhcmUgc2tpcHBlZCBmcm9tIGZ1enppbmcuCgojIyMjIGZ1enppbmcgb3B0aW9ucwoKLSAqKnJlcXVlc3RCb2R5IChBcnJheSkqKiA6CgogIEFuIGFycmF5IG9mIGZ1enppbmcgb3B0aW9ucyBmb3IgdGhlIFBvc3RtYW4gUmVxdWVzdCBCb2R5LgoKICBSRU1BUks6IEZ1enppbmcgaXMgb25seSBhcHBsaWNhYmxlIGZvciBPcGVuQVBJIHJlcXVlc3QgYm9kaWVzIG9mIG1lZGlhIHR5cGU6ICJhcHBsaWNhdGlvbi9qc29uIgoKICAtICoqcmVxdWlyZWRGaWVsZHMgKEJvb2xlYW4pKiogOiBSZW1vdmVzIHRoZSBwcm9wZXJ0aWVzICYgdmFsdWVzIGZyb20gdGhlIHJlcXVlc3QgYm9keSB0aGF0IGFyZSBtYXJrZWQgYXMgInJlcXVpcmVkIiBpbiBPcGVuQVBJLgogIC0gKiptaW5pbXVtTnVtYmVyRmllbGRzIChCb29sZWFuKSoqIDogQ2hhbmdlcyB0aGUgdmFsdWVzIG9mIHRoZSBudW1lcmljIGZpZWxkcyB0byBhIGxvd2VyIHZhbHVlIHRoYW4gdGhlIGRlZmluZWQgIm1pbmltdW0iIHByb3BlcnR5IGluIHRoZSBPcGVuQVBJIGRvY3VtZW50LgogIC0gKiptYXhpbXVtTnVtYmVyRmllbGRzIChCb29sZWFuKSoqIDogQ2hhbmdlcyB0aGUgdmFsdWUgb2YgdGhlIG51bWVyaWMgZmllbGRzIHRvIGEgaGlnaGVyIHZhbHVlIHRoYW4gdGhlIGRlZmluZWQgIm1heGltdW0iIHByb3BlcnR5IGluIHRoZSBPcGVuQVBJIGRvY3VtZW50LgogIC0gKiptaW5MZW5ndGhGaWVsZHMgKEJvb2xlYW4pKiogOiBDaGFuZ2VzIHRoZSBsZW5ndGggb2YgdGhlIHZhbHVlIHRvIGEgbG93ZXIgbGVuZ3RoIHRoYW4gdGhlIGRlZmluZWQgIm1pbkxlbmd0aCIgcHJvcGVydHkgaW4gdGhlIE9wZW5BUEkgZG9jdW1lbnQuCiAgLSAqKm1heExlbmd0aEZpZWxkcyAoQm9vbGVhbikqKiA6IENoYW5nZXMgdGhlIGxlbmd0aCBvZiB0aGUgdmFsdWUgdG8gYSBoaWdoZXIgbGVuZ3RoIHRoYW4gdGhlIGRlZmluZWQgIm1heExlbmd0aCIgcHJvcGVydHkgaW4gdGhlIE9wZW5BUEkgZG9jdW1lbnQuCgotICoqcmVxdWVzdFF1ZXJ5UGFyYW1zIChBcnJheSkqKiA6CgogIEFuIGFycmF5IG9mIGZ1enppbmcgb3B0aW9ucyBmb3IgdGhlIFBvc3RtYW4gUmVxdWVzdCBRdWVyeSBwYXJhbWV0ZXJzLgoKICAtICoqcmVxdWlyZWRGaWVsZHMgKEJvb2xlYW4pKiogOiBSZW1vdmVzIHRoZSBwcm9wZXJ0aWVzICYgdmFsdWVzIGZyb20gdGhlIHJlcXVlc3QgcXVlcnkgcGFyYW1zIHRoYXQgYXJlIG1hcmtlZCBhcyAicmVxdWlyZWQiIGluIE9wZW5BUEkuCiAgLSAqKm1pbmltdW1OdW1iZXJGaWVsZHMgKEJvb2xlYW4pKiogOiBDaGFuZ2VzIHRoZSB2YWx1ZXMgb2YgdGhlIG51bWVyaWMgZmllbGRzIHRvIGEgbG93ZXIgdmFsdWUgdGhhbiB0aGUgZGVmaW5lZCAibWluaW11bSIgcHJvcGVydHkgaW4gdGhlIE9wZW5BUEkgZG9jdW1lbnQuCiAgLSAqKm1heGltdW1OdW1iZXJGaWVsZHMgKEJvb2xlYW4pKiogOiBDaGFuZ2VzIHRoZSB2YWx1ZSBvZiB0aGUgbnVtZXJpYyBmaWVsZHMgdG8gYSBoaWdoZXIgdmFsdWUgdGhhbiB0aGUgZGVmaW5lZCAibWF4aW11bSIgcHJvcGVydHkgaW4gdGhlIE9wZW5BUEkgZG9jdW1lbnQuCiAgLSAqKm1pbkxlbmd0aEZpZWxkcyAoQm9vbGVhbikqKiA6IENoYW5nZXMgdGhlIGxlbmd0aCBvZiB0aGUgdmFsdWUgdG8gYSBsb3dlciBsZW5ndGggdGhhbiB0aGUgZGVmaW5lZCAibWluTGVuZ3RoIiBwcm9wZXJ0eSBpbiB0aGUgT3BlbkFQSSBkb2N1bWVudC4KICAtICoqbWF4TGVuZ3RoRmllbGRzIChCb29sZWFuKSoqIDogQ2hhbmdlcyB0aGUgbGVuZ3RoIG9mIHRoZSB2YWx1ZSB0byBhIGhpZ2hlciBsZW5ndGggdGhhbiB0aGUgZGVmaW5lZCAibWF4TGVuZ3RoIiBwcm9wZXJ0eSBpbiB0aGUgT3BlbkFQSSBkb2N1bWVudC4KCi0gKipyZXF1ZXN0SGVhZGVycyAoQXJyYXkpKiogOgoKICBBbiBhcnJheSBvZiBmdXp6aW5nIG9wdGlvbnMgZm9yIHRoZSBQb3N0bWFuIFJlcXVlc3QgSGVhZGVycy4KCiAgLSAqKnJlcXVpcmVkRmllbGRzIChCb29sZWFuKSoqIDogUmVtb3ZlcyB0aGUgcHJvcGVydGllcyAmIHZhbHVlcyBmcm9tIHRoZSByZXF1ZXN0IGhlYWRlcnMgdGhhdCBhcmUgbWFya2VkIGFzICJyZXF1aXJlZCIgaW4gT3BlbkFQSS4KICAtICoqbWluaW11bU51bWJlckZpZWxkcyAoQm9vbGVhbikqKiA6IENoYW5nZXMgdGhlIHZhbHVlcyBvZiB0aGUgbnVtZXJpYyBmaWVsZHMgdG8gYSBsb3dlciB2YWx1ZSB0aGFuIHRoZSBkZWZpbmVkICJtaW5pbXVtIiBwcm9wZXJ0eSBpbiB0aGUgT3BlbkFQSSBkb2N1bWVudC4KICAtICoqbWF4aW11bU51bWJlckZpZWxkcyAoQm9vbGVhbikqKiA6IENoYW5nZXMgdGhlIHZhbHVlIG9mIHRoZSBudW1lcmljIGZpZWxkcyB0byBhIGhpZ2hlciB2YWx1ZSB0aGFuIHRoZSBkZWZpbmVkICJtYXhpbXVtIiBwcm9wZXJ0eSBpbiB0aGUgT3BlbkFQSSBkb2N1bWVudC4KICAtICoqbWluTGVuZ3RoRmllbGRzIChCb29sZWFuKSoqIDogQ2hhbmdlcyB0aGUgbGVuZ3RoIG9mIHRoZSB2YWx1ZSB0byBhIGxvd2VyIGxlbmd0aCB0aGFuIHRoZSBkZWZpbmVkICJtaW5MZW5ndGgiIHByb3BlcnR5IGluIHRoZSBPcGVuQVBJIGRvY3VtZW50LgogIC0gKiptYXhMZW5ndGhGaWVsZHMgKEJvb2xlYW4pKiogOiBDaGFuZ2VzIHRoZSBsZW5ndGggb2YgdGhlIHZhbHVlIHRvIGEgaGlnaGVyIGxlbmd0aCB0aGFuIHRoZSBkZWZpbmVkICJtYXhMZW5ndGgiIHByb3BlcnR5IGluIHRoZSBPcGVuQVBJIGRvY3VtZW50LgoKRm9yIG1vcmUgZGV0YWlscywgcmV2aWV3IHRoZSBbZnV6emluZyBleGFtcGxlXShodHRwczovL2dpdGh1Yi5jb20vYXBpZGVjay1saWJyYXJpZXMvcG9ydG1hbi90cmVlL21haW4vZXhhbXBsZXMvdGVzdHN1aXRlLWZ1enppbmctdGVzdHMpLgoKPGhyPgoKIyMjIFBvcnRtYW4gLSBgb3BlcmF0aW9uUHJlUmVxdWVzdFNjcmlwdHNgIHByb3BlcnRpZXMKClRoZSBgb3BlcmF0aW9uUHJlUmVxdWVzdFNjcmlwdHNgIGNvbmZpZ3VyYXRpb24gd2lsbCBpbmplY3QgcHJlLXJlcXVlc3Qgc2NyaXB0cyBpbiB0aGUgUG9zdG1hbiBjb2xsZWN0aW9uLCBvbiByZXF1ZXN0IGxldmVsLgpQb3N0bWFuIGV4ZWN1dGVzIHByZS1yZXF1ZXN0IHNjcmlwdHMgYmVmb3JlIGEgcmVxdWVzdCBydW5zLiBJZiB5b3Ugd2FudCB0byBzZXQgdGhlIFBvc3RtYW4gQ29sbGVjdGlvbiBwcmUtcmVxdWVzdCBzY3JpcHRzIG9uIHRoZSBjb2xsZWN0aW9uIGxldmVsLCB5b3UgY2FuIHVzZSB0aGUgYGdsb2JhbHNgID4gYGNvbGxlY3Rpb25QcmVSZXF1ZXN0U2NyaXB0c2AgY29uZmlndXJhdGlvbi4KVGhlIGBvcGVyYXRpb25QcmVSZXF1ZXN0U2NyaXB0c2AgaXMgaW5zZXJ0ZWQgb24gdGhlIHJlcXVlc3QgbGV2ZWwuCgojIyMjIG9wZXJhdGlvblByZVJlcXVlc3RTY3JpcHRzIG9wdGlvbnMKCi0gKipvcGVuQXBpT3BlcmF0aW9uSWQgKFN0cmluZykqKiA6IFJlZmVyZW5jZSB0byB0aGUgT3BlbkFQSSBvcGVyYXRpb25JZCBvbiB3aGljaCB0aGUgIlByZS1yZXF1ZXN0IFNjcmlwdHMiIHdpbGwgYmUgaW5zZXJ0ZWQuIChleGFtcGxlOiBgbGVhZHNBbGxgKQotICoqb3BlbkFwaU9wZXJhdGlvbklkcyAoQXJyYXkpKiogOiBSZWZlcmVuY2VzIHRvIGFuIGFycmF5IG9mIE9wZW5BUEkgb3BlcmF0aW9uSWRzLCBmb3Igd2hpY2ggdGhlICJQcmUtcmVxdWVzdCBTY3JpcHRzIiB3aWxsIGJlIGluc2VydGVkIChleGFtcGxlOiBgWydsZWFkc0FsbCcsICdjb21wYW5pZXNBbGwnLCAnY29udGFjdHNBbGwnXWAKLSAqKm9wZW5BcGlPcGVyYXRpb24gKFN0cmluZykqKiA6IFJlZmVyZW5jZSB0byBjb21iaW5hdGlvbiBvZiB0aGUgT3BlbkFQSSBtZXRob2QgJiBwYXRoLCBmb3Igd2hpY2ggdGhlICJQcmUtcmVxdWVzdCBTY3JpcHRzIiB3aWxsIGJlIGluc2VydGVkIChleGFtcGxlOiBgR0VUOjovY3JtL2xlYWRzYCkKLSAqKmV4Y2x1ZGVGb3JPcGVyYXRpb25zIChBcnJheSB8IG9wdGlvbmFsKSoqIDogUmVmZXJlbmNlcyB0byBPcGVuQVBJIG9wZXJhdGlvbnMgdGhhdCB3aWxsIGJlIHNraXBwZWQgZm9yIHRhcmdldGluZy4gKGV4YW1wbGU6IGBbImxlYWRzQWRkIiwgIkdFVDo6L2NybS9sZWFkcy97aWR9Il1gKQoKLSAqKnNjcmlwdHMgKEFycmF5KSoqIDogQXJyYXkgb2Ygc2NyaXB0cyB0aGF0IHdpbGwgYmUgaW5qZWN0ZWQgYXMgUG9zdG1hbiBQcmUtcmVxdWVzdCBTY3JpcHRzIG9uIHJlcXVlc3QgbGV2ZWwsIHRoYXQgd2lsbCBiZSBleGVjdXRlZCBiZWZvcmUgdGhlIHRhcmdldGVkIHJlcXVlc3RzIGluIHRoaXMgY29sbGVjdGlvbi4gVmFsdWVzIGNhbiBiZSB0aGUgc2NyaXB0IGNvbnRlbnQgb3IgcGF0aCB0byB0aGUgc2NyaXB0IGZpbGUgKHdpdGggYGZpbGU6YCBwcmVmaXgpLgoKPGhyPgoKIyMjIFBvcnRtYW4gLSBgZ2xvYmFsc2AgcHJvcGVydHkKClRoZSBjb25maWd1cmF0aW9uIGRlZmluZWQgaW4gdGhlIGBnbG9iYWxzYCB3aWxsIGJlIGV4ZWN1dGVkIG9uIHRoZSBmdWxsIFBvc3RtYW4gY29sbGVjdGlvbi4gVGhpcyBpcyBoYW5keSBpZiB5b3UgbmVlZCB0byBkbyBtYXNzIHJlcGxhY2VtZW50cyBvZiB2YXJpYWJsZXMgb3Igc3BlY2lmaWMgd29yZHMva2V5cy92YWx1ZXMgaW4gdGhlIGZ1bGwgY29sbGVjdGlvbiB0aGF0IGNhbm5vdCBiZSBvdmVyd3JpdHRlbiBwZXIgcmVxdWVzdC4KCiMjIyMgZ2xvYmFscyBvcHRpb25zCgotICoqc3RyaXBSZXNwb25zZUV4YW1wbGVzIChEZWZhdWx0OiBmYWxzZSkqKiA6IFN0cmlwIHRoZSByZXNwb25zZSBleGFtcGxlcyBmcm9tIHRoZSBnZW5lcmF0ZWQgUG9zdG1hbiBjb2xsZWN0aW9uLgotICoqdmFyaWFibGVDYXNpbmcqKiA6IENoYW5nZSB0aGUgY2FzaW5nIG9mIHRoZSBhdXRvLWdlbmVyYXRlZCBQb3N0bWFuIHZhcmlhYmxlcy4gU3VwcG9ydGVkIHZhbHVlcyBhcmU6IGBjYW1lbENhc2VgLCBgcGFzY2FsQ2FzZWAsIGBrZWJhYkNhc2VgLCBgdHJhaW5DYXNlYCwgYHNuYWtlQ2FzZWAsIGBhZGFDYXNlYCwgYGNvbnN0YW50Q2FzZWAsIGBjb2JvbENhc2VgLCBgZG90Tm90YXRpb25gLiBTZWUgdGhlIFtBc3NpZ24gJiBPdmVyd3JpdGUgZXhhbXBsZV0oaHR0cHM6Ly9naXRodWIuY29tL2FwaWRlY2stbGlicmFyaWVzL3BvcnRtYW4vdHJlZS9tYWluL2V4YW1wbGVzL3Rlc3RzdWl0ZS1hc3NpZ24tb3ZlcndyaXRlI2dsb2JhbHMpIGZvciB0aGUgZGlmZmVyZW50IGNhc2luZyBvcHRpb25zLgotICoqc2VwYXJhdG9yU3ltYm9sIChEZWZhdWx0OiAiOjoiKSoqIDogQ2hhbmdlIHRoZSBzZXBhcmF0b3Igc3ltYm9sIGZvciB0aGUgYXV0by1nZW5lcmF0ZWQgUG9zdG1hbiB0ZXN0TmFtZSBkZXNjcmlwdGlvbiAoRXhhbXBsZTogYFtHRVRdOjovY3JtL2xlYWRzIC0gU3RhdHVzIGNvZGUgaXMgMnh4YCkuIEhlbHBmdWwgd2hlbiB1c2luZyB0aGUgW3Bvc3RtYW4tdG8tazZdKGh0dHBzOi8vZ2l0aHViLmNvbS9hcGlkZWNrLWxpYnJhcmllcy9wb3N0bWFuLXRvLWs2KSBjb252ZXJ0ZXIuCi0gKipjb2xsZWN0aW9uUHJlUmVxdWVzdFNjcmlwdHMqKiA6IEFycmF5IG9mIHNjcmlwdHMgdGhhdCB3aWxsIGJlIGluamVjdGVkIGFzIFBvc3RtYW4gQ29sbGVjdGlvbiBQcmUtcmVxdWVzdCBTY3JpcHRzIHRoYXQgd2lsbCBiZSBleGVjdXRlZCBieSBQb3N0bWFuIGJlZm9yZSBldmVyeSByZXF1ZXN0IGluIHRoaXMgY29sbGVjdGlvbi4gVmFsdWVzIGNhbiBiZSB0aGUgc2NyaXB0IGNvbnRlbnQgb3IgcGF0aCB0byB0aGUgc2NyaXB0IGZpbGUgKHdpdGggYGZpbGU6YCBwcmVmaXgpLgotICoqY29sbGVjdGlvblRlc3RTY3JpcHRzKio6IEFycmF5IG9mIHNjcmlwdHMgdGhhdCB3aWxsIGJlIGluamVjdGVkIGFzIFBvc3RtYW4gQ29sbGVjdGlvbiBUZXN0IFNjcmlwdHMgd2lsbCBiZSBleGVjdXRlZCBieSBQb3N0bWFuIGFmdGVyIGV2ZXJ5IHJlcXVlc3QgaW4gdGhpcyBjb2xsZWN0aW9uLiBWYWx1ZXMgY2FuIGJlIHRoZSBzY3JpcHQgY29udGVudCBvciBwYXRoIHRvIHRoZSBzY3JpcHQgZmlsZSAod2l0aCBgZmlsZTpgIHByZWZpeCkuCi0gKipjb2xsZWN0aW9uVmFyaWFibGVzKio6IEEgbWFwIG9mIGtleSB2YWx1ZSBwYWlycyB0aGF0IHdpbGwgaW5zZXJ0ZWQgYXMgUG9zdG1hbiBjb2xsZWN0aW9uIHZhcmlhYmxlcy4KLSAqKmtleVZhbHVlUmVwbGFjZW1lbnRzKiogOiBBIG1hcCBvZiBwYXJhbWV0ZXIga2V5IG5hbWVzIHRoYXQgd2lsbCBoYXZlIHRoZWlyIHZhbHVlcyByZXBsYWNlZCB3aXRoIHRoZSBwcm92aWRlZCBQb3N0bWFuIHZhcmlhYmxlcy4KLSAqKnZhbHVlUmVwbGFjZW1lbnRzKiogOiBBIG1hcCBvZiB2YWx1ZXMgdGhhdCB3aWxsIGhhdmUgdGhlaXIgdmFsdWVzIHJlcGxhY2VkIHdpdGggdGhlIHByb3ZpZGVkIHZhbHVlcy4KLSAqKnJhd1JlcGxhY2VtZW50cyoqIDogQ29uc2lkZXIgdGhpcyBhICJzZWFyY2ggJiByZXBsYWNlIiB1dGlsaXR5LCB0aGF0IHdpbGwgc2VhcmNoIGEgc3RyaW5nL29iamVjdC8uLi4gYW5kIHJlcGxhY2UgaXQgd2l0aCBhbm90aGVyIHN0cmluZy9vYmplY3QvLi4uCiAgVGhpcyBpcyB2ZXJ5IHVzZWZ1bCB0byByZXBsYWNlIGRhdGEgZnJvbSB0aGUgT3BlbkFQSSBzcGVjaWZpY2F0aW9uLCBiZWZvcmUgaXQgaXMgdXNlZCBpbiB0aGUgUG9ydG1hbiB0ZXN0IGF1dG9tYXRpb24gZ2VuZXJhdGlvbi4KLSAqKnBvcnRtYW5SZXBsYWNlbWVudHMqKiA6IFRoZSAic2VhcmNoICYgcmVwbGFjZSIgdXRpbGl0eSByaWdodCBiZWZvcmUgdGhlIGZpbmFsIFBvc3RtYW4gZmlsZSBpcyB3cml0dGVuLCB0aGF0IHdpbGwgc2VhcmNoIGEgc3RyaW5nL29iamVjdC8uLi4gYW5kIHJlcGxhY2UgaXQgd2l0aCBhbm90aGVyIHN0cmluZy9vYmplY3QvLi4uCiAgVGhpcyBpcyBwcmFjdGljYWwgdG8gcmVwbGFjZSBhbnkgZGF0YSBmcm9tIHRoZSBnZW5lcmF0ZWQgUG9ydG1hbiBjb2xsZWN0aW9uLCBiZWZvcmUgaXQgaXMgdXNlZCBpbiBQb3N0bWFuIC8gTmV3bWFuIHRlc3QgZXhlY3V0aW9uLgotICoqb3JkZXJPZk9wZXJhdGlvbnMqKiA6IFRoZSBgb3JkZXJPZk9wZXJhdGlvbnNgIGlzIGEgbGlzdCBvZiBPcGVuQVBJIG9wZXJhdGlvbnMsIHdoaWNoIGlzIHVzZWQgYnkgUG9ydG1hbiB0byBzb3J0IHRoZSBQb3N0bWFuIHJlcXVlc3RzIGluIHRoZSBkZXNpcmVkIG9yZGVyLCBpbiB0aGVpciBmb2xkZXIuIFRoZSBvcmRlcmluZyBmcm9tIGBvcmRlck9mT3BlcmF0aW9uc2AgaXMgcGVyZm9ybWVkIHBlciBmb2xkZXIuIEl0ZW1zIHRoYXQgYXJlICoqbm90KiogZGVmaW5lZCBpbiB0aGUgYG9yZGVyT2ZPcGVyYXRpb25zYCBsaXN0IHdpbGwgcmVtYWluIGF0IHRoZWlyIGN1cnJlbnQgb3JkZXIuCi0gKipzZWN1cml0eU92ZXJ3cml0ZXMqKiA6IE92ZXJ3cml0ZSBvZiB0aGUgT3BlbkFQSSBTZWN1cml0eSBTY2hlbWUgT2JqZWN0IChzdXBwb3J0ZWQgdHlwZXM6ICJhcGlLZXkiLCAiaHR0cCBiYXNpYyBhdXRoIiwgImh0dHAgYmVhcmVyIHRva2VuIikgb3IgaW5qZWN0IGEgUG9zdG1hbiBhdXRob3JpemF0aW9uIG9wdGlvbiAoc3VwcG9ydGVkIHR5cGVzOiBhd3N2NCwgZGlnZXN0LCBlZGdlZ3JpZCwgbnRsbSwgb2F1dGgxLCBvYXV0aDIpIG9uIGEgY29sbGVjdGlvbiBsZXZlbC4gCgogIFRoZSBzZWN1cml0eSBvdmVyd3JpdGVzIHByb3ZpZGVzIGEgbnVtYmVyIG9mIHNlY3VyaXR5IHR5cGVzOgoKICAtICoqcmVtb3ZlIChCb29sZWFuIHRydWUvZmFsc2UgfCBEZWZhdWx0OiBmYWxzZSkqKiA6IFVuc2V0cyB0aGUgQXV0aG9yaXphdGlvbiB0eXBlIGluIFBvc3RtYW4uCiAgCiAgLSAqKmFwaUtleSoqOiBUaGUgQVBJIGtleSBhdXRoIHdpbGwgc2VuZCBhIGtleS12YWx1ZSBwYWlyIHRvIHRoZSBBUEkgZWl0aGVyIGluIHRoZSByZXF1ZXN0IGhlYWRlcnMgb3IgcXVlcnkgcGFyYW1ldGVycy4KICAgIC0gKip2YWx1ZSAoU3RyaW5nKSoqIDogVGhlIHZhbHVlIHRoYXQgd2lsbCBiZSBpbnNlcnRlZCBhcyB0aGUgUG9zdG1hbiBhcGlLZXkgdmFsdWUuIEl0IGNhbiBiZSBhIHBsYWluIHZhbHVlIG9yIGEgUG9zdG1hbiB2YXJpYWJsZS4KICAgIC0gKiprZXkgKFN0cmluZyB8IG9wdGlvbmFsKSoqIDogVGhlICJrZXkiIHZhbHVlIHRoYXQgd2lsbCBiZSBpbnNlcnRlZCBpbiB0aGUgUG9zdG1hbiBhcGlLZXkga2V5IGZpZWxkLiBJdCBjYW4gYmUgYSBwbGFpbiB2YWx1ZSBvciBhIFBvc3RtYW4gdmFyaWFibGUuCiAgICAtICoqaW4gKFN0cmluZyB8IG9wdGlvbmFsKSoqIDogVGhlICJpbiIgdmFsdWUgdGhhdCBkZWZpbmVzIHdoZXJlIHRoZSBBcGkgS2V5IHdpbGwgYmUgYWRkZWQgaW4gdGhlIFBvc3RtYW4gcmVxdWVzdCBIZWFkZXIgb3IgUXVlcnkgcGFyYW1zLiBQb3N0bWFuIHN1cHBvcnRzIGBoZWFkZXJgIGZvciAiSGVhZGVyIiBvciBgcXVlcnlgIGZvciAiUXVlcnkgUGFyYW1zIi4KICAKICBgYGBqc29uCiAgInNlY3VyaXR5T3ZlcndyaXRlcyI6IHsKICAgICAgICAiYXBpS2V5IjogewogICAgICAgICAgInZhbHVlIjogInt7YXBpS2V5fX0iCiAgICAgICAgfQogICAgICB9CiAgYGBgCiAgCiAgLSAqKmJlYXJlcioqOiBUaGUgYmVhcmVyIHRva2VucyBhbGxvdyByZXF1ZXN0cyB0byBhdXRoZW50aWNhdGUgdXNpbmcgYW4gYWNjZXNzIGtleSwgc3VjaCBhcyBhIEpTT04gV2ViIFRva2VuIChKV1QpLgogICAgLSAqKnRva2VuIChTdHJpbmcpKiogOiBUaGUgInRva2VuIiB0aGF0IHdpbGwgYmUgaW5zZXJ0ZWQgYXMgdGhlIFBvc3RtYW4gYmVhcmVyIHRva2VuIHZhbHVlLiBJdCBjYW4gYmUgYSBwbGFpbiB2YWx1ZSBvciBhIFBvc3RtYW4gdmFyaWFibGUuCiAgCiAgYGBganNvbgogICJzZWN1cml0eU92ZXJ3cml0ZXMiOiB7CiAgICAgICAgImJlYXJlciI6IHsKICAgICAgICAgICJ0b2tlbiI6ICJ7e2JlYXJlclRva2VufX0iCiAgICAgICAgfQogICAgICB9CiAgYGBgCiAgCiAgLSAqKmJhc2ljKio6IEJhc2ljIGF1dGhlbnRpY2F0aW9uIGludm9sdmVzIHNlbmRpbmcgYSB2ZXJpZmllZCB1c2VybmFtZSBhbmQgcGFzc3dvcmQgd2l0aCB5b3VyIHJlcXVlc3QuCiAgICAtICoqdXNlcm5hbWUgKFN0cmluZykqKiA6IFRoZSB1c2VybmFtZSB0aGF0IHdpbGwgYmUgaW5zZXJ0ZWQgYXMgdGhlIGJhc2ljIGF1dGhlbnRpY2F0aW9uIHVzZXJuYW1lIHZhbHVlCiAgICAtICoqcGFzc3dvcmQgKFN0cmluZykqKiA6IFRoZSBwYXNzd29yZCB0aGF0IHdpbGwgYmUgaW5zZXJ0ZWQgYXMgdGhlIGJhc2ljIGF1dGhlbnRpY2F0aW9uIHBhc3N3b3JkIHZhbHVlCiAgCiAgYGBganNvbgogICJzZWN1cml0eU92ZXJ3cml0ZXMiOiB7CiAgICAgICAgImJhc2ljIjogewogICAgICAgICAgInVzZXJuYW1lIjogInt7dXNlcm5hbWV9fSIsCiAgICAgICAgICAicGFzc3dvcmQiOiAie3twYXNzd29yZH19IiwKICAgICAgICB9CiAgICAgIH0KICBgYGAKICAKICAtICoqUG9zdG1hbiBzZWN1cml0eSBvcHRpb25zKio6IE92ZXJ3cml0ZS9JbnNlcnQgUG9zdG1hbiBhdXRob3JpemF0aW9uIHNldHRpbmdzLgogICAgLSAqKlBvc3RtYW4gVHlwZSAoQXJyYXkpKiogOiBUaGUgUG9zdG1hbiBhdXRob3JpemF0aW9uIG9wdGlvbiB0eXBlLiBTdXBwb3J0ZWQgdHlwZXMgYXJlOiBgYXdzdjRgLCBgZGlnZXN0YCwgYGVkZ2VncmlkYCwgYG50bG1gLCBgb2F1dGgxYCwgYG9hdXRoMmAKICAgICAgLSAqKkF0dHJpYnV0ZXMqKiA6IGtleS92YWx1ZS90eXBlIGFzIGRlZmluZWQgaW4gUG9zdG1hbiAodGhlIGVhc2llc3Qgd2F5IHRvIGRlZmluZSBpdCwgaXMgdG8gc2V0IGl0IG1hbnVhbGx5IGluIFBvc3RtYW4sIGV4cG9ydCB0aGUgY29sbGVjdGlvbiBhbmQgZXh0cmFjdCB0aGUgbWF0Y2hpbmcgdmFsdWVzIGZyb20gdGhlIEpTT04gZmlsZSkuIAogIAogIGBgYGpzb24KICB7CiAgICAiZ2xvYmFscyI6IHsKICAgICAgInNlY3VyaXR5T3ZlcndyaXRlcyI6IHsKICAgICAgICAib2F1dGgxIjogWwogICAgICAgICAgewogICAgICAgICAgICAia2V5IjogImFkZEVtcHR5UGFyYW1zVG9TaWduIiwKICAgICAgICAgICAgInZhbHVlIjogdHJ1ZSwKICAgICAgICAgICAgInR5cGUiOiAiYm9vbGVhbiIKICAgICAgICAgIH0sCiAgICAgICAgICB7CiAgICAgICAgICAgICJrZXkiOiAidGltZXN0YW1wIiwKICAgICAgICAgICAgInZhbHVlIjogIjE0NjEzMTk3NjkiLAogICAgICAgICAgICAidHlwZSI6ICJzdHJpbmciCiAgICAgICAgICB9LAogICAgICAgICAgewogICAgICAgICAgICAia2V5IjogIm5vbmNlIiwKICAgICAgICAgICAgInZhbHVlIjogImlrM29UNSIsCiAgICAgICAgICAgICJ0eXBlIjogInN0cmluZyIKICAgICAgICAgIH0sCiAgICAgICAgICB7CiAgICAgICAgICAgICJrZXkiOiAiY29uc3VtZXJTZWNyZXQiLAogICAgICAgICAgICAidmFsdWUiOiAiRCtFZFEtZ3MkLSVAMk51NyIsCiAgICAgICAgICAgICJ0eXBlIjogInN0cmluZyIKICAgICAgICAgIH0sCiAgICAgICAgICB7CiAgICAgICAgICAgICJrZXkiOiAiY29uc3VtZXJLZXkiLAogICAgICAgICAgICAidmFsdWUiOiAiUktDR3puYTdidjlZRDU3YyIsCiAgICAgICAgICAgICJ0eXBlIjogInN0cmluZyIKICAgICAgICAgIH0sCiAgICAgICAgICB7CiAgICAgICAgICAgICJrZXkiOiAic2lnbmF0dXJlTWV0aG9kIiwKICAgICAgICAgICAgInZhbHVlIjogIkhNQUMtU0hBMSIsCiAgICAgICAgICAgICJ0eXBlIjogInN0cmluZyIKICAgICAgICAgIH0sCiAgICAgICAgICB7CiAgICAgICAgICAgICJrZXkiOiAidmVyc2lvbiIsCiAgICAgICAgICAgICJ2YWx1ZSI6ICIxLjAiLAogICAgICAgICAgICAidHlwZSI6ICJzdHJpbmciCiAgICAgICAgICB9LAogICAgICAgICAgewogICAgICAgICAgICAia2V5IjogImFkZFBhcmFtc1RvSGVhZGVyIiwKICAgICAgICAgICAgInZhbHVlIjogZmFsc2UsCiAgICAgICAgICAgICJ0eXBlIjogImJvb2xlYW4iCiAgICAgICAgICB9CiAgICAgICAgXQogICAgICB9CiAgICB9CiAgfQogIGBgYAoKRm9yIG1vcmUgZGV0YWlscyBvbiB0aGUgYGdsb2JhbHNgIGNvbmZpZ3VyYXRpb24gb3B0aW9ucyAsIHJldmlldyB0aGUgW2dsb2JhbHMgZXhhbXBsZV0oaHR0cHM6Ly9naXRodWIuY29tL2FwaWRlY2stbGlicmFyaWVzL3BvcnRtYW4vdHJlZS9tYWluL2V4YW1wbGVzL3BvcnRtYW4tZ2xvYmFscykgYW5kIFtvcmRlcmluZyBleGFtcGxlXShodHRwczovL2dpdGh1Yi5jb20vYXBpZGVjay1saWJyYXJpZXMvcG9ydG1hbi90cmVlL21haW4vZXhhbXBsZXMvcG9zdG1hbi1vcmRlcmluZykKCjxocj4KCiMjIENvbmZpZ3VyZSBhdXRvbWF0aWMgdXBsb2FkIHRvIFBvc3RtYW4gQXBwCgo+IFJFTUFSSzogUG9ydG1hbiBkb2VzICoqbm90KiogcmVxdWlyZSB5b3UgdG8gaGF2ZSBhIFBvc3RtYW4gYWNjb3VudC4KCkluIGNhc2UgeW91IHdhbnQgdG8gc3luYyB0aGUgZ2VuZXJhdGVkIFBvc3RtYW4gY29sbGVjdGlvbiB3aXRoIHRoZSBQb3N0bWFuIGFwcCAoYHBvcnRtYW4gLS1zeW5jUG9zdG1hbmApLCB5b3Ugd291bGQgbmVlZCBhIFBvc3RtYW4gYWNjb3VudCBzaW5jZSBQb3J0bWFuIGxldmVyYWdlcyB0aGUgUG9zdG1hbiBBUEkgdG8gc3luYyB0aGUgY29sbGVjdGlvbi4KClRoaXMgY2FuIGJlIGEgImZyZWUiIFBvc3RtYW4gYWNjb3VudCBvciBhbnkgb2YgdGhlIHBhaWQgW1Bvc3RtYW4gcGxhbnNdKGh0dHBzOi8vd3d3LnBvc3RtYW4uY29tL3ByaWNpbmcvKS4KClRoZSBnZW5lcmF0ZWQgUG9zdG1hbiBjb2xsZWN0aW9uIGNhbiBhbHdheXMgYmUgW2ltcG9ydGVkIG1hbnVhbGx5XShodHRwczovL2xlYXJuaW5nLnBvc3RtYW4uY29tL2RvY3MvZ2V0dGluZy1zdGFydGVkL2ltcG9ydGluZy1hbmQtZXhwb3J0aW5nLWRhdGEvI2ltcG9ydGluZy1kYXRhLWludG8tcG9zdG1hbiksIHdpdGhvdXQgYSBQb3N0bWFuIGFjY291bnQuCgpUbyBlbmFibGUgYXV0b21hdGljIHVwbG9hZHMgb2YgdGhlIGdlbmVyYXRlZCBQb3N0bWFuIGNvbGxlY3Rpb24gdGhyb3VnaCBQb3J0bWFuLCBmb2xsb3cgdGhlc2Ugc3RlcHM6CgoxLiBHZXQgeW91ciBQb3N0bWFuIEFQSSBrZXkKCiFbRG9jdW1lbnRhdGlvbiBQaXBlbGluZV0oaHR0cHM6Ly9yYXcuZ2l0aHVidXNlcmNvbnRlbnQuY29tL2FwaWRlY2stbGlicmFyaWVzL3BvcnRtYW4vbWFpbi9kb2NzL2ltZy9wb3N0bWFuLWF1dG9tYXRpb24tMC5wbmcpCgohW0RvY3VtZW50YXRpb24gUGlwZWxpbmVdKGh0dHBzOi8vcmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbS9hcGlkZWNrLWxpYnJhcmllcy9wb3J0bWFuL21haW4vZG9jcy9pbWcvcG9zdG1hbi1hdXRvbWF0aW9uLTEucG5nKQoKIVtEb2N1bWVudGF0aW9uIFBpcGVsaW5lXShodHRwczovL3Jhdy5naXRodWJ1c2VyY29udGVudC5jb20vYXBpZGVjay1saWJyYXJpZXMvcG9ydG1hbi9tYWluL2RvY3MvaW1nL3Bvc3RtYW4tYXV0b21hdGlvbi0yLnBuZykKCjIuIEdvdG8gdGhlIHJvb3QgZm9sZGVyIG9mIHlvdXIgcHJvamVjdAoKMy4gQ29weSBbZW52LXBvc3RtYW4tYXBwLWV4YW1wbGVdKC4vLmVudi1wb3N0bWFuLWFwcC5leGFtcGxlKSBhcyBgLmVudmAgaW4gdGhlIHJvb3QgZm9sZGVyIG9mIHlvdXIgcHJvamVjdAoKNC4gRW50ZXIgeW91ciBQb3N0bWFuIEFQSSBrZXkgaW4gYSBsb2NhbCBgLmVudmAgZmlsZSwgYXMgYFBPU1RNQU5fQVBJX0tFWT1bcmVwbGFjZSB3aXRoIFBvc3RtYW4gYXBpIGtleV1gCgpOZXh0IHRvIHRoZSBQb3N0bWFuIEFQSSBrZXksIHlvdSBjYW4gYWxzbyBwYXNzIGFsb25nIHRoZSBQb3N0bWFuIFdvcmtzcGFjZSBuYW1lICYgdGhlIHNwZWNpZmljIFBvc3RtYW4gQ29sbGVjdGlvbiBVSUQuCgpTdXBwb3J0ZWQgUG9zdG1hbiBBUEkgLkVOViB2YXJpYWJsZXM6CgotICoqUE9TVE1BTl9BUElfS0VZKiogOiBQb3N0bWFuIEFQSSBrZXkKLSAqKlBPU1RNQU5fV09SS1NQQUNFX05BTUUqKiA6IFBvc3RtYW4gV29ya3NwYWNlIG5hbWUgdG8gdGFyZ2V0IHRoZSB1cGxvYWQgb2YgdGhlIGdlbmVyYXRlZCBQb3N0bWFuIGNvbGxlY3Rpb24KLSAqKlBPU1RNQU5fQ09MTEVDVElPTl9VSUQqKiA6IFBvc3RtYW4gY29sbGVjdGlvbiBVSUQgdG8gdXBsb2FkIHdpdGggdGhlIGdlbmVyYXRlZCBQb3N0bWFuIGNvbGxlY3Rpb24KClRoZSBgUE9TVE1BTl9XT1JLU1BBQ0VfTkFNRWAgJiBgUE9TVE1BTl9DT0xMRUNUSU9OX1VJRGAgdmFyaWFibGVzIGNhbiBhbHNvIGJlIHNldCBhcyBDTEkgT3B0aW9ucyBgLS1wb3N0bWFuV29ya3NwYWNlTmFtZWAgJiBgLS1wb3N0bWFuVWlkYCAsIHdoaWNoIHdpbGwgb3ZlcnJ1bGUgdGhlIHZhcmlhYmxlcyBkZWZpbmVkIGluIHRoZSAuRU5WIGZpbGUuCgo+ICoqUkVDT01NRU5EQVRJT04qKjogRG8gbm90IGNvbW1pdCB0aGUgYC5lbnZgIGZpbGUgaW4gYW55IHZlcnNpb25pbmcgc3lzdGVtIGxpa2UgR0lUIGlmIGl0IGNvbnRhaW5zIGNvbmZpZGVudGlhbCBjcmVkZW50aWFscy4KCiMgQ3JlZGl0cwoKUG9ydG1hbiBzdGFydGVkIGFzIGEgUFIgb24gdGhlIGhhbmR5IFtvcGVuYXBpLXRvLXBvc3RtYW5dKGh0dHBzOi8vZ2l0aHViLmNvbS9wb3N0bWFubGFicy9vcGVuYXBpLXRvLXBvc3RtYW4pIHBhY2thZ2UgdG8gZ2VuZXJhdGUgYmFzaWMgUG9zdG1hbiB0ZXN0cyBmcm9tIHRoZSBPcGVuQVBJIHNwZWNpZmljYXRpb24uCgpbQXBpZGVja10oaHR0cHM6Ly93d3cuYXBpZGVjay5jb20vKSBpbW1lZGlhdGVseSBzYXcgdGhlIFBSJ3MgdmFsdWUgYW5kIGNvbGxhYm9yYXRlZCB3aXRoIHRoZSBvcmlnaW5hbCBhdXRob3IsIFtUaW0gSGFzZWxhYXJzXShodHRwczovL2dpdGh1Yi5jb20vdGhpbTgxKSwgdG8gYWRvcHQgdGhlIGZ1bmN0aW9uYWxpdHkgYW5kIGV4dGVuZCB0aGUgb3B0aW9ucyAmIHRvb2xpbmcgdG8gY3JlYXRlICJQb3J0bWFuIi4KClRoZSBnb2FsIG9mIFBvcnRtYW4gaXMgdG8gZHJpdmUgQVBJIGF1dG9tYXRpb24gYnkgJ3BvcnRpbmcnIGEgc3RhdGljIE9wZW5BUEkgZG9jdW1lbnQgdG8gYSBkeW5hbWljIFBvc3RtYW4gY29sbGVjdGlvbiB0aGF0IGluY2x1ZGVzIGEgcG93ZXJmdWwgdGVzdGluZyBzdWl0ZSB3aXRoIHZhcmlhYmxlIHJlcXVlc3RzLCBib2RpZXMgYW5kIG1vcmUuIEFsbCB0aGlzIHdoaWxlIGJlaW5nIGVhc3kgdG8gY29uZmlndXJlICYgcmVhZHkgdG8gdXNlLgoKUG9ydG1hbiBpcyBhIHZhbHVhYmxlIHRvb2wgaW4gYW55IE9wZW5BUEkgd29ya2Zsb3csIGZvciBsb2NhbCBkZXZlbG9wbWVudCBvciBhcyBwYXJ0IG9mIGEgQ0kvQ0QgYXV0b21hdGlvbiBwaXBlbGluZS4KCkNyZWRpdHMgZm9yIHRoaXMgcGFja2FnZSBmb3IgdGhlIGhhcmQgd29yayBvZiBbTmljayBMbG95ZF0oaHR0cHM6Ly9naXRodWIuY29tL25pY2tsbG95ZCkgYW5kIFtUaW0gSGFzZWxhYXJzXShodHRwczovL2dpdGh1Yi5jb20vdGhpbTgxKS4KCiMgRnV0dXJlIGlkZWFzCgotIFsgXSBNYWtlIFBvc3RtYW4gc2VjdXJpdHkgZHluYW1pYwoKIyBSZXNvdXJjZXMKCkEgY29sbGVjdGlvbiBvZiBibG9nIHBvc3RzIGFuZCByZXNvdXJjZXMgYWJvdXQgUG9ydG1hbgoKLSBodHRwczovL3d3dy5hbmRtb3JlLmRldi9ibG9nL2dldHRpbmctc3RhcnRlZC1wb3J0bWFuLyBieSBbYW5kbW9yZWRldl0oaHR0cHM6Ly9naXRodWIuY29tL2FuZG1vcmVkZXYpCi0gaHR0cHM6Ly9pdG5leHQuaW8vYXV0b21hdGluZy1hcGktdGVzdGluZy13aXRoLXBvcnRtYW4tcG9zdG1hbi1hbmQtbmV3bWFuLWVjMWE4NjljYmM5OSBieSBUeWxlciBPd2VuCi0gaHR0cHM6Ly93d3cuY29kZWNlbnRyaWMuZGUvd2lzc2Vucy1odWIvYmxvZy9jaGFyZ2UteW91ci1hcGlzLXZvbHVtZS0zLW9wdGltaXppbmctYXBpLXRlc3Rpbmctd2l0aC1jb250cmFjdC10ZXN0aW5nIGJ5IFtEYW5pZWwgS29jb3RdKGh0dHBzOi8vZ2l0aHViLmNvbS9kYW5pZWxrb2NvdCkKLSBodHRwczovL2Jsb2cuYXBpZGVjay5jb20vcG9ydG1hbi1hcGktdGVzdGluZyBieSBbQ2hyaXMgV29vZF0oaHR0cHM6Ly93d3cubGlua2VkaW4uY29tL2luL3NlbnNpYmxld29vZC8pCi0gaHR0cHM6Ly9kZXYudG8vb25lYWR2YW5jZWQvYXBpLXByb3ZpZGVyLWNvbnRyYWN0LXRlc3RpbmctZm9yLWFsbC13aXRoLXBvcnRtYW4tb3BlbmFwaS1hbmQtcG9zdG1hbi00bGwxIGJ5IFtBbGV4IFNhdmFnZV0oaHR0cHM6Ly9naXRodWIuY29tL3NhdmFnZS1hbGV4KQotIGh0dHBzOi8vZ2l0aHViLmNvbS90aGltODEvc3BlYy1kcml2ZW4tb3BlbmFwaS1jb250cmFjdC1wZXJmb3JtYW5jZS10ZXN0aW5nIGJ5IFtUaW0gSGFzZWxhYXJzXShodHRwczovL2dpdGh1Yi5jb20vdGhpbTgxKQotIGh0dHBzOi8vd3d3LmNvZGVjZW50cmljLmRlL3dpc3NlbnMtaHViL2Jsb2cvY2hhcmdlLXlvdXItYXBpcy12b2x1bWUtMjUtY29udHJhY3QtdGVzdGluZyBieSBQYXNxdWFsZSBCcnVuZWxsaQotIGh0dHBzOi8vcWFzZS5pby9ibG9nL2F1dG9tYXRlZC1jb250cmFjdC10ZXN0aW5nL2FtcC8gQ29udHJhY3QgVGVzdGluZyBpbiBBY3Rpb24gYnkgS2lyaWxsIEl2bGlldgo=
- readmeEtag: '"59ad63fde52b01e338302d7bf2ce63158e882e40"'
- readmeLastModified: Thu, 08 Aug 2024 07:42:01 GMT
+ IVtwb3J0bWFuLWhlcm9dKGh0dHBzOi8vdXNlci1pbWFnZXMuZ2l0aHVidXNlcmNvbnRlbnQuY29tLzExMTIxMjkvMTI1ODMzNTEyLWMzMjM1OWQ4LWFmMjctNDk1Yi04MjExLTc0NGM1MDQxNDZiMi5wbmcpCgo8cCBhbGlnbj0iY2VudGVyIj4KICA8YSBocmVmPSJodHRwczovL3d3dy5ucG1qcy5jb20vcGFja2FnZS9AYXBpZGVjay9wb3J0bWFuIj48aW1nIHNyYz0iaHR0cHM6Ly9pbWcuc2hpZWxkcy5pby9ucG0vdi9AYXBpZGVjay9wb3J0bWFuLnN2ZyIgYWx0PSJUb3RhbCBEb3dubG9hZHMiPjwvYT4KICA8YSBocmVmPSJodHRwczovL3d3dy5ucG1qcy5jb20vcGFja2FnZS9AYXBpZGVjay9wb3J0bWFuIj48aW1nIHNyYz0iaHR0cHM6Ly9pbWcuc2hpZWxkcy5pby9ucG0vZHcvQGFwaWRlY2svcG9ydG1hbi5zdmciIGFsdD0iTGF0ZXN0IFN0YWJsZSBWZXJzaW9uIj48L2E+CjwvcD4KCiMgUG9ydG1hbiDwn5Go8J+PveKAjfCfmoAKClBvcnQgT3BlbkFQSSBTcGVjIHRvIFBvc3RtYW4gQ29sbGVjdGlvbiwgd2l0aCBjb250cmFjdCAmIHZhcmlhdGlvbiB0ZXN0cyBpbmNsdWRlZCEKClBvcnRtYW4gbGV2ZXJhZ2VzIE9wZW5BUEkgZG9jdW1lbnRzLCB3aXRoIGFsbCBpdHMgZGVmaW5lZCBBUEkgcmVxdWVzdC9yZXNwb25zZSBwcm9wZXJ0aWVzLCB0byBwb3dlciB5b3VyIFBvc3RtYW4gY29sbGVjdGlvbi4KTGV0IFBvcnRtYW4gZG8gYWxsIHRoZSB3b3JrIGFuZCBpbmplY3QgY29udHJhY3QgJiB2YXJpYXRpb24gdGVzdHMgd2l0aCBhIG1pbmltdW0gb2YgY29uZmlndXJhdGlvbi4KQ3VzdG9taXplIHRoZSBQb3N0bWFuIHJlcXVlc3RzICYgdmFyaWFibGVzIHdpdGggYSB3aWRlIHJhbmdlIG9mIG9wdGlvbnMgdG8gYXNzaWduICYgb3ZlcndyaXRlIHZhcmlhYmxlcy4KCj4gWyFJTVBPUlRBTlRdICAKPiAqKkltcG9ydGFudCBDaGFuZ2U6KiogSWYgeW91IGFyZSB1c2luZyB2ZXJzaW9uIDEuMjguMCB3aXRoIGEgY3VzdG9tIFBvc3RtYW4gY29uZmlnIGZpbGUgc3BlY2lmaWVkIGJ5IHRoZSBgLS1wb3N0bWFuQ29uZmlnRmlsZWAgZmxhZywgcGxlYXNlIGVuc3VyZSB0aGF0IHRoZSBgcGFyYW1ldGVyc1Jlc29sdXRpb25gIG9wdGlvbiBpcyBzZXQgdG8gZWl0aGVyICJFeGFtcGxlIiBvciAiU2NoZW1hIi4gVGhlIG9wdGlvbnMgYHJlcXVlc3RQYXJhbWV0ZXJzUmVzb2x1dGlvbmAgYW5kIGBleGFtcGxlUGFyYW1ldGVyc1Jlc29sdXRpb25gIGFyZSBkZXByZWNhdGVkIG9wZW5hcGktdG8tcG9zdG1hbiBvcHRpb25zLgoKIyMgV2h5IHVzZSBQb3J0bWFuPwoKQ29udmVydCB5b3VyIE9wZW5BUEkgc3BlYyB0byBQb3N0bWFuLCBnZW5lcmF0ZSBjb250cmFjdCAmIHZhcmlhdGlvbiB0ZXN0cywgdXBsb2FkIHRoZSBQb3N0bWFuIGNvbGxlY3Rpb24gJiBydW4gdGhlIHRlc3RzIHRocm91Z2ggTmV3bWFuLgpJbmNsdWRlIHRoZSBQb3J0bWFuIENMSSBhcyBwYXJ0IG9mIGFuIGF1dG9tYXRlZCBwcm9jZXNzIGZvciBpbmplY3RpbmcgdGhlIHBvd2VyIG9mIFBvcnRtYW4gZGlyZWN0bHkgaW50byB5b3VyIENJL0NEIHBpcGVsaW5lLgoKW1JlYWQgdGhlIGZ1bGwgYmxvZyBwb3N0XShodHRwczovL2Jsb2cuYXBpZGVjay5jb20vYW5ub3VuY2luZy1wb3J0bWFuKQoKIyMgRmVhdHVyZXMKCldpdGggUG9ydG1hbiwgeW91IGNhbjoKCi0gW3hdIENvbnZlcnQgYW4gT3BlbkFQSSBkb2N1bWVudCB0byBhIFBvc3RtYW4gY29sbGVjdGlvbgogIC0gW3hdIFN1cHBvcnQgZm9yIE9wZW5BUEkgMy4wCiAgLSBbeF0gU3VwcG9ydCBmb3IgT3BlbkFQSSAzLjEgKGJldGEpCi0gRXh0ZW5kIHRoZSBQb3N0bWFuIGNvbGxlY3Rpb24gd2l0aCBjYXBhYmlsaXRpZXMKICAtIFt4XSBJbmplY3QgUG9zdG1hbiBDb250cmFjdCBUZXN0cyAtIFtsZWFybiBtb3JlXSguL2V4YW1wbGVzL3Rlc3RzdWl0ZS1jb250cmFjdC10ZXN0cy9yZWFkbWUubWQpCiAgLSBbeF0gQXNzaWduIGNvbGxlY3Rpb24gdmFyaWFibGVzIC0gW2xlYXJuIG1vcmVdKC4vZXhhbXBsZXMvdGVzdHN1aXRlLWFzc2lnbi12YXJpYWJsZXMvcmVhZG1lLm1kKQogIC0gW3hdIEluamVjdCBQb3N0bWFuIFZhcmlhdGlvbiBUZXN0cyAtIFtsZWFybiBtb3JlXSguL2V4YW1wbGVzL3Rlc3RzdWl0ZS12YXJpYXRpb24tdGVzdHMvcmVhZG1lLm1kKQogIC0gW3hdIEluamVjdCBQb3N0bWFuIEludGVncmF0aW9uIFRlc3RzCiAgLSBbeF0gSW5qZWN0IFBvc3RtYW4gd2l0aCBQcmUtcmVxdWVzdCAmIFRlc3RzIHNjcmlwdHMgb24gYSBjb2xsZWN0aW9uIG9yIG9wZXJhdGlvbiBsZXZlbCAtIFtsZWFybiBtb3JlXSguL2V4YW1wbGVzL3Rlc3RzdWl0ZS1wcmUtcmVxdWVzdC1zY3JpcHRzL3JlYWRtZS5tZCkKICAtIFt4XSBNb2RpZnkgUG9zdG1hbiByZXF1ZXN0cyAtIGxlYXJuIG1vcmUgW2hlcmVdKC4vZXhhbXBsZXMvdGVzdHN1aXRlLW92ZXJ3cml0ZXMvcmVhZG1lLm1kKSBhbmQgW2hlcmVdKC4vZXhhbXBsZXMvdGVzdHN1aXRlLWFzc2lnbi1vdmVyd3JpdGUvcmVhZG1lLm1kKQogIC0gW3hdIEZ1enogUG9zdG1hbiByZXF1ZXN0cyAtIFtsZWFybiBtb3JlXSguL2V4YW1wbGVzL3Rlc3RzdWl0ZS1mdXp6aW5nLXRlc3RzL3JlYWRtZS5tZCkKLSBbeF0gVXBsb2FkIHRoZSBQb3N0bWFuIGNvbGxlY3Rpb24gdG8geW91ciBQb3N0bWFuIGFwcCAtIFtsZWFybiBtb3JlXSgjY29uZmlndXJlLWF1dG9tYXRpYy11cGxvYWQtdG8tcG9zdG1hbi1hcHApCi0gW3hdIFRlc3QgdGhlIFBvc3RtYW4gY29sbGVjdGlvbiB3aXRoIE5ld21hbiAtIFtsZWFybiBtb3JlXSgjcnVuLW5ld21hbi13aXRoLW5ld21hbi1vcHRpb25zKQotIFt4XSBTcGxpdCB0aGUgY29uZmlndXJhdGlvbiBpbnRvIG11bHRpcGxlIGZpbGVzIHVzaW5nICRyZWYKLSBbeF0gTWFuYWdlIGV2ZXJ5dGhpbmcgaW4gY29uZmlnIGZpbGUgZm9yIGVhc3kgbG9jYWwgb3IgQ0kvQ0QgdXNhZ2UgLSBbbGVhcm4gbW9yZV0oI3Bhc3MtYWxsLWNsaS1vcHRpb25zLWFzLWpzb255YW1sLWZpbGUpCgojIyBHZXR0aW5nIHN0YXJ0ZWQKCjEuIFtJbnN0YWxsIFBvcnRtYW5dKCNpbnN0YWxsYXRpb24pCjIuIEluaXRpYWxpemUgUG9ydG1hbiBDTEkgY29uZmlndXJhdGlvbiBieSBydW5uaW5nOiBgJCBwb3J0bWFuIC0taW5pdGAKCk9SCgoxLiBbSW5zdGFsbCBQb3J0bWFuXSgjaW5zdGFsbGF0aW9uKQoyLiBDb3B5IGAuZW52LmV4YW1wbGVgIHRvIGAuZW52YCBhbmQgYWRkIGVudmlyb25tZW50IHZhcmlhYmxlcyB5b3UgbmVlZCBhdmFpbGFibGUgdG8geW91ciBjb2xsZWN0aW9uCjMuIENvcHkvcmVuYW1lIGFuZCBjdXN0b21pemUgZWFjaCBvZiB0aGUgXF9cX1xfXF8uZGVmYXVsdC5qc29uIGNvbmZpZyBmaWxlcyBpbiB0aGUgcm9vdCBkaXJlY3RvcnkgdG8gc3VpdCB5b3VyIG5lZWRzCjQuIFN0YXJ0IGNvbnZlcnRpbmcgeW91ciBPcGVuQVBJIGRvY3VtZW50IHRvIFBvc3RtYW4KCk9SCgpJZiB5b3UgaGF2ZSBhbiBleGlzdGluZyBPcGVuQVBJIHNwZWNpZmljYXRpb24sIHRyeSBydW5uaW5nIFBvcnRtYW4gd2l0aG91dCBhbnkgc3BlY2lhbCBzZXR1cCB0byBzZWUgaG93IGl0IGNhbiBnZW5lcmF0ZSBhIFBvc3RtYW4gY29sbGVjdGlvbiB3aXRoIGNvbnRyYWN0IHRlc3RzIHdpdGggaXQncyBkZWZhdWx0IGNvbmZpZ3VyYXRpb24uCgoxLiBbSW5zdGFsbCBQb3J0bWFuXSgjaW5zdGFsbGF0aW9uKQoyLiBSdW4gcG9ydG1hbiBvbiB5b3VyIE9wZW5BUEkgc3BlYywgaWU6IAotIGBucHggcG9ydG1hbiAtbCBteS1vcGVuYXBpLXNwZWMueWFtbGAgCi0gKGlmIHlvdXIgc3BlYyBpcyBob3N0ZWQgdXNlIHRoZSBgLXVgIHBhcmFtZXRlciwgaWU6CiAgLSBgbnB4IHBvcnRtYW4gLXUgaHR0cHM6Ly9wZXRzdG9yZTMuc3dhZ2dlci5pby9hcGkvdjMvb3BlbmFwaS5qc29uYAoKVGhpcyB3aWxsIGdlbmVyYXRlIGEgcG9zdG1hbiBjb2xsZWN0aW9uIHRoYXQgY29udGFpbnMgYSByZXF1ZXN0IGZvciBldmVyeSBtZXRob2Q6ZW5kcG9pbnQgY29tYmluYXRpb24gZGVmaW5lZCBpbiB5b3VyIHNwZWMsIGFuZCBpbmNsdWRlIGEgc2V0IG9mICJDb250cmFjdCBUZXN0cyIgZm9yIGVhY2ggb25lLiAgWW91IGNhbiBsZWFybiBtb3JlIGFib3V0IGNvbnRyYWN0IHRlc3RzLCBhbmQgaG93IHRvIGV4YW1pbmUgdGhlIGdlbmVyYXRlZCBjb2xsZWN0aW9uIFtoZXJlXSguL2V4YW1wbGVzL3Rlc3RzdWl0ZS1jb250cmFjdC10ZXN0cy9yZWFkbWUubWQpLgoKKFJ1bm5pbmcgcG9ydG1hbiB3aXRoIG5vIGV4cGxpY2l0IGNvbmZpZ3VyYXRpb24gaXMgdGhlIHNhbWUgYXMgcnVubmluZyBpdCB3aXRoIFt0aGlzIGNvbmZpZ3VyYXRpb24gZmlsZV0oLi9leGFtcGxlcy90ZXN0c3VpdGUtY29udHJhY3QtdGVzdHMvZGVmYXVsdC1wb3J0bWFuLWNvbmZpZy5qc29uKSkKCkFsbCBjb25maWd1cmF0aW9uIG9wdGlvbnMgdG8gY29udmVydCBmcm9tIE9wZW5BUEkgdG8gUG9zdG1hbiBjYW4gYmUgZm91bmQgaW4gdGhlIFtvcGVuYXBpLXRvLXBvc3RtYW5dKGh0dHBzOi8vZ2l0aHViLmNvbS9wb3N0bWFubGFicy9vcGVuYXBpLXRvLXBvc3RtYW4vYmxvYi9kZXZlbG9wL09QVElPTlMubWQpIHBhY2thZ2UgZG9jdW1lbnRhdGlvbi4KQWxsIGNvbmZpZ3VyYXRpb24gb3B0aW9ucyB0byBmaWx0ZXIgZmxhZ3MvdGFncy9tZXRob2RzL29wZXJhdGlvbnMvLi4uIGZyb20gT3BlbkFQSSBjYW4gYmUgZm91bmQgaW4gdGhlIFtvcGVuYXBpLWZvcm1hdF0oaHR0cHM6Ly9naXRodWIuY29tL3RoaW04MS9vcGVuYXBpLWZvcm1hdCNvcGVuYXBpLWZpbHRlci1vcHRpb25zKSBwYWNrYWdlIGRvY3VtZW50YXRpb24gb3IgdXNpbmcgdGhlIG9ubGluZSBbb3BlbmFwaS1mb3JtYXQgcGxheWdyb3VuZF0oaHR0cHM6Ly9vcGVuYXBpLWZvcm1hdC1wbGF5Z3JvdW5kLnZlcmNlbC5hcHAvKS4KCiMjIEluc3RhbGxhdGlvbgoKIyMjIExvY2FsIEluc3RhbGxhdGlvbiAocmVjb21tZW5kZWQpCgpZb3UgY2FuIGFkZCB0aGUgUG9ydG1hbiBDTEkgdG8gdGhlIGBub2RlX21vZHVsZXNgIGJ5IHVzaW5nOgoKYGBgc2hlbGwKJCBucG0gaW5zdGFsbCAtLXNhdmUgQGFwaWRlY2svcG9ydG1hbgpgYGAKCm9yIHVzaW5nIHlhcm46CgpgYGBzaGVsbAokIHlhcm4gYWRkIEBhcGlkZWNrL3BvcnRtYW4KYGBgCgpOb3RlIHRoYXQgdGhpcyB3aWxsIHJlcXVpcmUgeW91IHRvIHJ1biB0aGUgUG9ydG1hbiBDTEkgd2l0aCBgbnB4IEBhcGlkZWNrL3BvcnRtYW4gLWwgeW91ci1vcGVuYXBpLWZpbGUueWFtbGAgb3IsIGlmCnlvdSBhcmUgdXNpbmcgYW4gb2xkZXIgdmVyc2lvbiBvZiBucG0sIGAuL25vZGVfbW9kdWxlcy8uYmluL3BvcnRtYW4gLWwgeW91ci1vcGVuYXBpLWZpbGUueWFtbGAuCgojIyMgR2xvYmFsIEluc3RhbGxhdGlvbgoKYGBgc2hlbGwKJCBucG0gaW5zdGFsbCAtZyBAYXBpZGVjay9wb3J0bWFuCmBgYAoKIyMjIE5QWCB1c2FnZQoKVG8gZXhlY3V0ZSB0aGUgQ0xJIHdpdGhvdXQgaW5zdGFsbGluZyBpdCB2aWEgbnBtLCB1c2UgdGhlIG5weCBtZXRob2QuCgpgYGBzaGVsbAokIG5weCBAYXBpZGVjay9wb3J0bWFuIC1sIHlvdXItb3BlbmFwaS1maWxlLnlhbWwKYGBgCgojIyBDTEkgVXNhZ2UKCmBgYApVc2FnZTogLXUgPHVybD4gLWwgPGxvY2FsPiAtYiA8YmFzZVVybD4gLXQgPGluY2x1ZGVUZXN0cz4KCk9wdGlvbnM6CiAtLWhlbHAgICAgICAgICAgICAgICAgICAgICBTaG93IGhlbHAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbYm9vbGVhbl0KIC0tdmVyc2lvbiAgICAgICAgICAgICAgICAgIFNob3cgdmVyc2lvbiBudW1iZXIgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtib29sZWFuXQogLS11cmwsLXUgICAgICAgICAgICAgICAgICAgVVJMIG9mIE9BUyB0byBwb3J0IHRvIFBvc3RtYW4gY29sbGVjdGlvbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW3N0cmluZ10KIC0tbG9jYWwsIC1sICAgICAgICAgICAgICAgIFVzZSBsb2NhbCBPQVMgdG8gcG9ydCB0byBQb3N0bWFuIGNvbGxlY3Rpb24gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtzdHJpbmddCiAtLWJhc2VVcmwsIC1iICAgICAgICAgICAgICBPdmVycmlkZSBzcGVjIGJhc2VVcmwgdG8gdXNlIGluIFBvc3RtYW4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbc3RyaW5nXQogLS1vdXRwdXQsIC1vICAgICAgICAgICAgICAgV3JpdGUgdGhlIFBvc3RtYW4gY29sbGVjdGlvbiB0byBhbiBvdXRwdXQgZmlsZSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW3N0cmluZ10KIC0tb2FPdXRwdXQgICAgICAgICAgICAgICAgIFdyaXRlIHRoZSAoZmlsdGVyZWQpIE9wZW5BUEkgZmlsZSB0byBhbiBvdXRwdXQgZmlsZSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtzdHJpbmddCiAtLXJ1bk5ld21hbiwgLW4gICAgICAgICAgICBSdW4gTmV3bWFuIG9uIG5ld2x5IGNyZWF0ZWQgY29sbGVjdGlvbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbYm9vbGVhbl0KIC0tbmV3bWFuUnVuT3B0aW9ucyAgICAgICAgIEpTT04gc3RyaW5naWZpZWQgb2JqZWN0IHRvIHBhc3Mgb3B0aW9ucyBmb3IgY29uZmlndXJpbmcgTmV3bWFuICAgICAgICAgICAgICAgICAgIFtzdHJpbmddCiAtLW5ld21hbk9wdGlvbnNGaWxlICAgICAgICBQYXRoL1VSTCB0byBOZXdtYW4gb3B0aW9ucyBmaWxlIHRvIHBhc3Mgb3B0aW9ucyBmb3IgY29uZmlndXJpbmcgTmV3bWFuICAgICAgICAgICBbc3RyaW5nXQogLS1uZXdtYW5JdGVyYXRpb25EYXRhLCAtZCAgSXRlcmF0aW9uIGRhdGEgdG8gcnVuIE5ld21hbiB3aXRoIG5ld2x5IGNyZWF0ZWQgY29sbGVjdGlvbiAgICAgICAgICAgICAgICAgICAgICAgW3N0cmluZ10KIC0tbG9jYWxQb3N0bWFuICAgICAgICAgICAgIFVzZSBsb2NhbCBQb3N0bWFuIGNvbGxlY3Rpb24sIHNraXBzIE9wZW5BUEkgY29udmVyc2lvbiAgICAgICAgICAgICAgICAgICAgICAgICAgIFtzdHJpbmddCiAtLXN5bmNQb3N0bWFuICAgICAgICAgICAgICBVcGxvYWQgZ2VuZXJhdGVkIGNvbGxlY3Rpb24gdG8gUG9zdG1hbiAoZGVmYXVsdDogZmFsc2UpICAgICAgICAgICAgICAgICAgICAgICAgICBbYm9vbGVhbl0KIC0tc3luY1Bvc3RtYW5Db2xsZWN0aW9uSWRzIFN5bmNocm9uaXNlcyB0aGUgSURzIG9mIG5ld2x5IGNyZWF0ZWQgcG9zdG1hbiBjb2xsZWN0aW9ucyB3aXRoIHRob3NlIGFscmVhZHkKICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9uIFBvc3RtYW4sIHVzZWZ1bCB3aGVuIHlvdSB3YW50IHRvIHVzZSBQb3N0bWFuIHB1bGwgcmVxdWVzdCAoZGVmYXVsdDogZmFsc2UpICAgIFtib29sZWFuXQogLS1wb3N0bWFuRmFzdFN5bmMgICAgICAgICAgUG9zdG1hbiBzeW5jIGNyZWF0ZXMgbmV3IGNvbGxlY3Rpb24gKG5ldyBVSUQpLGluc3RlYWQgb2YgdXBkYXRlIChkZWZhdWx0OiBmYWxzZSkgW2Jvb2xlYW5dCiAtLXBvc3RtYW5SZWZyZXNoQ2FjaGUgICAgICBQb3N0bWFuIHN5bmMgd2lsbCByZWZyZXNoIGFsbCBsb2NhbCBjYWNoZWQgUG9zdG1hbiBBUEkgZGF0YSAoZGVmYXVsdDogZmFsc2UpICAgICBbYm9vbGVhbl0KIC0tcG9zdG1hblVpZCwgLXAgICAgICAgICAgIFBvc3RtYW4gY29sbGVjdGlvbiBVSUQgdG8gdXBsb2FkIHdpdGggdGhlIGdlbmVyYXRlZCBQb3N0bWFuIGNvbGxlY3Rpb24gICAgICAgICAgIFtzdHJpbmddCiAtLXBvc3RtYW5Xb3Jrc3BhY2VOYW1lICAgICBQb3N0bWFuIFdvcmtzcGFjZSBuYW1lIHRvIHRhcmdldCB0aGUgdXBsb2FkIG9mIHRoZSBnZW5lcmF0ZWQgUG9zdG1hbiBjb2xsZWN0aW9uICBbc3RyaW5nXQogLS1pbmNsdWRlVGVzdHMsIC10ICAgICAgICAgSW5qZWN0IFBvcnRtYW4gdGVzdCBzdWl0ZSAoZGVmYXVsdDogdHJ1ZSkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2Jvb2xlYW5dCiAtLWJ1bmRsZUNvbnRyYWN0VGVzdHMgICAgICBCdW5kbGUgUG9ydG1hbiBjb250cmFjdCB0ZXN0cyBpbiBhIHNlcGFyYXRlIGZvbGRlciBpbiBQb3N0bWFuIChkZWZhdWx0OiBmYWxzZSkgICBbYm9vbGVhbl0KIC0tcG9ydG1hbkNvbmZpZ0ZpbGUsIC1jICAgIFBhdGgvVVJMIHRvIFBvcnRtYW4gc2V0dGluZ3MgY29uZmlnIGZpbGUgKHBvcnRtYW4tY29uZmlnLmpzb24pICAgICAgICAgICAgICAgICAgIFtzdHJpbmddCiAtLXBvc3RtYW5Db25maWdGaWxlLC1zICAgICBQYXRoIHRvIG9wZW5hcGktdG8tcG9zdG1hbiBjb25maWcgZmlsZSAocG9zdG1hbi1jb25maWcuanNvbikgICAgICAgICAgICAgICAgICAgICBbc3RyaW5nXQogLS1maWx0ZXJGaWxlICAgICAgICAgICAgICAgUGF0aC9VUkwgdG8gb3BlbmFwaS1mb3JtYXQgY29uZmlnIGZpbGUgKG9hcy1mb3JtYXQtZmlsdGVyLmpzb24pICAgICAgICAgICAgICAgICAgW3N0cmluZ10KIC0tZW52RmlsZSAgICAgICAgICAgICAgICAgIFBhdGggdG8gdGhlIC5lbnYgZmlsZSB0byBpbmplY3QgZW52aXJvbm1lbnQgdmFyaWFibGVzICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtzdHJpbmddCiAtLWNvbGxlY3Rpb25OYW1lICAgICAgICAgICBPdmVyd3JpdGUgT3BlbkFQSSB0aXRsZSB0byBzZXQgdGhlIFBvc3RtYW4gY29sbGVjdGlvbiBuYW1lICAgICAgICAgICAgICAgICAgICAgICBbc3RyaW5nXQogLS1jbGlPcHRpb25zRmlsZSAgICAgICAgICAgUGF0aC9VUkwgdG8gUG9ydG1hbiBDTEkgb3B0aW9ucyBmaWxlICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbc3RyaW5nXQogLS1pZ25vcmVDaXJjdWxhclJlZnMgICAgICAgSWdub3JlIGNpcmN1bGFyIHJlZmVyZW5jZXMgaW4gT3BlbkFQSSBzcGVjIChkZWZhdWx0OiBmYWxzZSkgICAgICAgICAgICAgICAgICAgICAgW2Jvb2xlYW5dCiAtLWxvZ0Fzc2lnblZhcmlhYmxlcyAgICAgICBUb2dnbGUgbG9nZ2luZyBvZiBhc3NpZ25lZCB2YXJpYWJsZXMgKGRlZmF1bHQ6IHRydWUpICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbYm9vbGVhbl0KIC0taW5pdCAgICAgICAgICAgICAgICAgICAgIENvbmZpZ3VyZSBQb3J0bWFuIENMSSBvcHRpb25zIGluIGFuIGludGVyYWN0aXZlIG1hbm5lciAgICAgICAgICAgICAgICAgICAgICAgICAgIFtzdHJpbmddCiAtLWV4dHJhVW5rbm93bkZvcm1hdHMgICAgICBBZGQgZXh0cmEgdW5rbm93biBmb3JtYXRzIHRvIGpzb24gc2NoZW1hIHRlc3RzICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbYXJyYXldCmBgYAoKIyMjIEVudmlyb25tZW50IHZhcmlhYmxlcyBhcyBQb3N0bWFuIHZhcmlhYmxlcwoKUG9ydG1hbiB1c2VzIGBkb3RlbnZgIHRvIG5vdCBvbmx5IGFjY2VzcyB2YXJpYWJsZXMgZm9yIGZ1bmN0aW9uYWxpdHksIGJ1dCB5b3UgY2FuIGFsc28gYWRkIGVudmlyb25tZW50IHZhcmlhYmxlcyB0aGF0IHlvdSdkIGxpa2UgZGVjbGFyZWQgd2l0aGluIHlvdXIgUG9zdG1hbiBlbnZpcm9ubWVudC4KU2ltcGx5IHByZWZpeCBhbnkgdmFyaWFibGUgbmFtZSB3aXRoIGBQT1JUTUFOX2AsIGFuZCBpdCB3aWxsIGJlIGF2YWlsYWJsZSBmb3IgdXNlIGluIHlvdXIgUG9zdG1hbiBjb2xsZWN0aW9uIGFzIHRoZSBjYW1lbC1jYXNlZCBlcXVpdmFsZW50LiBGb3IgZXhhbXBsZToKCmBgYApQT1JUTUFOX0NPTlNVTUVSX0lEPXRlc3RfdXNlcl9pZApgYGAKCndpbGwgYmUgYXZhaWxhYmxlIGluIHlvdXIgY29sbGVjdGlvbiBvciB0ZXN0cyBieSByZWZlcmVuY2luZzoKCmBgYAp7e2NvbnN1bWVySWR9fQpgYGAKCkl0IGlzIHBvc3NpYmxlIHRvIHNldCBhIHNwZWMtc3BlY2lmaWMgYC5lbnZgIGZpbGUsIHRoYXQgbGl2ZXMgbmV4dCB0byB5b3VyIGNvbmZpZyBmaWxlcy4gVGhlIHBhdGggY2FuIGJlIHBhc3NlZCBpbiB2aWEgYGVudkZpbGVgIGNsaSBvcHRpb24uClRoaXMgaXMgdXNlZnVsIGlmIHlvdSBoYXZlIFBvcnRtYW4gbWFuYWdpbmcgbXVsdGlwbGUgc3BlY3MgdGhhdCBoYXZlIHVuaXF1ZSBlbnZpcm9ubWVudCByZXF1aXJlbWVudHMuCgpCeSBkZWZhdWx0LCBQb3J0bWFuIHdpbGwgbGV2ZXJhZ2UgYW55IEVOVklST05NRU5UIHZhcmlhYmxlIHRoYXQgaXMgZGVmaW5lZCB0aGF0IHN0YXJ0cyB3aXRoIGBQT1JUTUFOX2AuCgpBbm90aGVyIG9wdGlvbiB0byBzZXQgdmFyaWFibGVzIGlzIGJ5IGNvbmZpZ3VyaW5nIHRoZW0gYXMgYGNvbGxlY3Rpb25WYXJpYWJsZXNgIGluIHRoZSBbZ2xvYmFscyBzZWN0aW9uXSgjcG9ydG1hbi0tLWdsb2JhbHMtcHJvcGVydHkpIG9mIHlvdXIgUG9ydG1hbiBjb25maWd1cmF0aW9uLgoKIyMjIENMSSBPcHRpb25zCgojIyMjIyMgSW5pdGlhbGl6ZSBQb3J0bWFuIENMSSBjb25maWd1cmF0aW9uCgpgYGAKcG9ydG1hbiAtLWluaXQKYGBgCgpUaGUgYGluaXRgIG9wdGlvbiB3aWxsIGhlbHAgeW91IHRvIGNvbmZpZ3VyZSB0aGUgY2xpQ29uZmlnIG9wdGlvbnMgYW5kIHB1dCB0aGUgZGVmYXVsdCBjb25maWcsIGVudiBmaWxlIGluIHBsYWNlIHRvIGtpY2stc3RhcnQgdGhlIHVzYWdlIG9mIFBvcnRtYW4uCgojIyMjIyMgUGFzcyBpbiB0aGUgcmVtb3RlbHkgaG9zdGVkIHNwZWMKCmBgYApwb3J0bWFuIC11IGh0dHBzOi8vc3BlY3MuYXBpZGVjay5jb20vY3JtLnltbApgYGAKCiMjIyMjIyBPdmVyd3JpdGUgdGhlIGJhc2VVcmwgaW4gc3BlYyBhbmQgcnVuIE5ld21hbgoKYGBgCnBvcnRtYW4gLXUgaHR0cHM6Ly9zcGVjcy5hcGlkZWNrLmNvbS9jcm0ueW1sIC1iIGh0dHA6Ly9sb2NhbGhvc3Q6MzA1MCAtbiB0cnVlCmBgYAoKIyMjIyMjIFBhdGggcGFzcyB0byBhIGxvY2FsIGRhdGEgZmlsZSBmb3IgTmV3bWFuIHRvIHVzZSBmb3IgaXRlcmF0aW9ucwoKYGBgCnBvcnRtYW4gLXUgaHR0cHM6Ly9zcGVjcy5hcGlkZWNrLmNvbS9jcm0ueW1sIC1iIGh0dHA6Ly9sb2NhbGhvc3Q6MzA1MCAtbiB0cnVlIC1kIC4vdG1wL25ld21hbi9kYXRhL2NybS5qc29uCmBgYAoKIyMjIyMjIFBhc3MgdGhlIHBhdGggdG8gYSBsb2NhbCBzcGVjICh1c2VmdWwgd2hlbiB1cGRhdGluZyB5b3VyIHNwZWNzKSBhbmQgb3V0cHV0IFBvc3RtYW4gY29sbGVjdGlvbiBsb2NhbGx5CgpgYGAKcG9ydG1hbiAtbCAuL3RtcC9zcGVjcy9jcm0ueW1sIC1vIC4vdG1wL3NwZWNzL2NybS5wb3N0bWFuLmpzb24KYGBgCgojIyMjIyMgU2tpcCB0ZXN0cyBhbmQganVzdCBnZW5lcmF0ZSBjb2xsZWN0aW9uCgpgYGAKcG9ydG1hbiAtbCAuL3RtcC9zcGVjcy9jcm0ueW1sIC10IGZhbHNlCmBgYAoKIyMjIyMjIEZpbHRlciBPcGVuQVBJIGFuZCBnZW5lcmF0ZSBjb2xsZWN0aW9uCgpgYGAKcG9ydG1hbiAtdSBodHRwczovL3NwZWNzLmFwaWRlY2suY29tL2NybS55bWwgLS1maWx0ZXJGaWxlIGV4YW1wbGVzL2NsaS1maWx0ZXJpbmcvb2FzLWZvcm1hdC1maWx0ZXIuanNvbgpgYGAKCkZvciBtb3JlIGRldGFpbHMsIHJldmlldyB0aGUgW2NsaS1maWx0ZXJpbmcgZXhhbXBsZV0oaHR0cHM6Ly9naXRodWIuY29tL2FwaWRlY2stbGlicmFyaWVzL3BvcnRtYW4vdHJlZS9tYWluL2V4YW1wbGVzL2NsaS1maWx0ZXJpbmcpLgoKIyMjIyMjIEFkZCBleHRyYSBmb3JtcyB0byBKc29uIHNjaGVtYSB2YWxpZGF0aW9uCgpgYGAKcG9ydG1hbiAtbCAuL3RtcC9zcGVjcy9jcm0ueW1sIC1vIC4vdG1wL3NwZWNzL2NybS5wb3N0bWFuLmpzb24gLS1leHRyYVVua25vd25Gb3JtYXRzIHVsaWQgb25lIHR3bwpgYGAKClRoaXMgbWFrZXMgdGhlIHNjaGVtYSB2YWxpZGF0aW9uIG1vcmUgbGVuaWVudCwgYW5kIHNvbHZlcyBwcm9ibGVtcyB3aXRoIHVua25vd24gZm9ybWF0cwoKIyMjIyMjIFVwbG9hZCBuZXdseSBnZW5lcmF0ZWQgY29sbGVjdGlvbiB0byBQb3N0bWFuLCB3aGljaCB3aWxsIHVwc2VydCB0aGUgY29sbGVjdGlvbiwgYmFzZWQgb24gdGhlIGNvbGxlY3Rpb24gbmFtZQoKYGBgCnBvcnRtYW4gLWwgLi90bXAvc3BlY3MvY3JtLnltbCAtLXN5bmNQb3N0bWFuCmBgYAoKVXBsb2FkIG5ld2x5IGdlbmVyYXRlZCBjb2xsZWN0aW9uIHRvIFBvc3RtYW4gdXNpbmcgdGhlIGNvbGxlY3Rpb24gVUlEIHRvIG92ZXJ3cml0ZSB0aGUgZXhpc3RpbmcuCgpgYGAKcG9ydG1hbiAtbCAuL3RtcC9zcGVjcy9jcm0ueW1sIC0tc3luY1Bvc3RtYW4gLXAgOTYwMTk2M2EtNTNmZi00YWFhLTkyYTAtMmU3MGE4YTJhNzQ4CmBgYAoKV2hlbiBhIGNvbGxlY3Rpb24gZ2V0cyBsYXJnZSwgdGhlIFBvc3RtYW4gQVBJIHdpbGwgY29tcGFyZSBhbGwgdGhlIHJlcXVlc3RzIHdoZW4gdXBkYXRpbmcgdGhlIGNvbGxlY3Rpb24uIFRoaXMgY2FuIHRha2Ugc29tZSB0aW1lIGV2ZW4gcmVzdWx0IGluIDV4eCBlcnJvcnMuClRvIG92ZXJjb21lIHRoaXMsIHlvdSBjYW4gdXNlIHRoZSBgLS1wb3N0bWFuRmFzdFN5bmNgIG9wdGlvbi4gVGhpcyBvcHRpb24gd2lsbCBzeW5jIHlvdXIgY29sbGVjdGlvbiB0byBQb3N0bWFuIGJ5IHVzaW5nICJkZWxldGUiIGFuZCAiY3JlYXRlIiBvcGVyYXRpb25zIGluc3RlYWQgb2YgdGhlICJ1cGRhdGUiLgoKUkVNQVJLOiBVc2luZyBgLS1wb3N0bWFuRmFzdFN5bmNgIHdpbGwgcmVzdWx0IGluIGEgbmV3IFBvc3RtYW4gY29sbGVjdGlvbiBhbmQgUG9zdG1hbiBVSUQgZm9yIGVhY2ggc3luYy4KCmBgYApwb3J0bWFuIC1sIC4vdG1wL3NwZWNzL2NybS55bWwgLS1zeW5jUG9zdG1hbiAtLXBvc3RtYW5GYXN0U3luYwpgYGAKClBvcnRtYW4gY2FjaGVzIGEgc2V0IG9mIFBvc3RtYW4gQVBJIGRhdGEgdG8gZmFjaWxpdGF0ZSBmYXN0ZXIgbG9va3VwcyBhbmQgdXBsb2FkcywgcHJldmVudGluZyB1bm5lY2Vzc2FyeSBjb25uZWN0aW5nIHRvIHRoZSBQb3N0bWFuIEFQSS4KSW4gY2FzZSB5b3UgbmVlZCB0byByZXNldCB0aGUgY2FjaGUgeW91IHNpbXBseSByZW1vdmUgdGhlIGAucG9ydG1hbi5jYWNoZS5qc29uYCBmaWxlIG9yIHNldCB0aGUgYC0tcG9zdG1hblJlZnJlc2hDYWNoZWAgb3B0aW9uIHdoZW4gcnVubmluZyB0aGUgUG9zdG1hbiBzeW5jLgoKYGBgCnBvcnRtYW4gLWwgLi90bXAvc3BlY3MvY3JtLnltbCAtLXN5bmNQb3N0bWFuIC0tcG9zdG1hblJlZnJlc2hDYWNoZQpgYGAKCiMjIyMjIyBQYXNzIGN1c3RvbSBwYXRocyBmb3IgY29uZmlnIGZpbGVzCgpBbGwgY29uZmlndXJhdGlvbiBvcHRpb25zIHRvIGNvbnZlcnQgZnJvbSBPcGVuQVBJIHRvIFBvc3RtYW4gY2FuIGJlIG9uIHRoZSBbb3BlbmFwaS10by1wb3N0bWFuXShodHRwczovL2dpdGh1Yi5jb20vcG9zdG1hbmxhYnMvb3BlbmFwaS10by1wb3N0bWFuL2Jsb2IvZGV2ZWxvcC9PUFRJT05TLm1kKSBwYWNrYWdlIGRvY3VtZW50YXRpb24uClBvcnRtYW4gcHJvdmlkZXMgYSBkZWZhdWx0IG9wZW5hcGktdG8tcG9zdG1hbiBjb25maWd1cmF0aW9uIFtwb3N0bWFuLWNvbmZpZy5kZWZhdWx0Lmpzb25dKHBvc3RtYW4tY29uZmlnLmRlZmF1bHQuanNvbiksIHdoaWNoIHdpbGwgYmUgdXNlZCBpZiBubyBjdXN0b20gY29uZmlnIGAtLXBvc3RtYW5Db25maWdGaWxlYCBpcyBwYXNzZWQuCgpQb3J0bWFuIGNvbmZpZ3VyYXRpb24gZmlsZSBpbiBKU09OIGZvcm1hdDoKCmBgYApwb3J0bWFuIC11IGh0dHBzOi8vc3BlY3MuYXBpZGVjay5jb20vY3JtLnltbCAtYyAuL3RtcC9jcm0vcG9ydG1hbi1jb25maWcuanNvbiAtcyAuL2NvbW1vbi9wb3N0bWFuLWNvbmZpZy5qc29uCmBgYAoKUG9ydG1hbiBjb25maWd1cmF0aW9uIGZpbGUgaW4gWUFNTCBmb3JtYXQ6CgpgYGAKcG9ydG1hbiAtdSBodHRwczovL3NwZWNzLmFwaWRlY2suY29tL2NybS55bWwgLWMgLi90bXAvY3JtL3BvcnRtYW4tY29uZmlnLnlhbWwgLXMgLi9jb21tb24vcG9zdG1hbi1jb25maWcuanNvbgpgYGAKCiMjIyMjIyBQYXNzIGFsbCBDTEkgb3B0aW9ucyBhcyBKU09OL1lBTUwgZmlsZQoKQWxsIHRoZSBDTEkgb3B0aW9ucyBjYW4gYmUgbWFuYWdlZCBpbiBhIHNlcGFyYXRlIGNvbmZpZ3VyYXRpb24gZmlsZSBhbmQgcGFzc2VkIGFsb25nIHRvIHRoZSBwb3J0bWFuIGNvbW1hbmQuIFRoaXMgd2lsbAptYWtlIGNvbmZpZ3VyYXRpb24gZWFzaWVyLCBlc3BlY2lhbGx5IGluIENJL0NEIGltcGxlbWVudGF0aW9ucy4KClBvcnRtYW4gQ0xJIG9wdGlvbnMgc2V0dGluZ3MgaW4gSlNPTiBmb3JtYXQKCmBgYApwb3J0bWFuIC0tY2xpT3B0aW9uc0ZpbGUgLi9leGFtcGxlcy9jbGktb3B0aW9ucy9wb3J0bWFuLWNsaS1vcHRpb25zLmpzb24KYGBgCgpQb3J0bWFuIENMSSBvcHRpb25zIHNldHRpbmdzIGluIFlBTUwgZm9ybWF0CgpgYGAKcG9ydG1hbiAtLWNsaU9wdGlvbnNGaWxlIC4vZXhhbXBsZXMvY2xpLW9wdGlvbnMvcG9ydG1hbi1jbGktb3B0aW9ucy55YW1sCmBgYAoKQWxsIHRoZSBhdmFpbGFibGUgUG9ydG1hbiBDTEkgb3B0aW9ucyBjYW4gYmUgdXNlZCBpbiB0aGUgY29uZmlnIGZpbGUuCkJ5IHBhc3NpbmcgdGhlIENMSSBvcHRpb25zIGFzIHBhcmFtZXRlciwgeW91IGNhbiBvdmVyd3JpdGUgdGhlIGRlZmluZWQgQ0xJIG9wdGlvbnMgZGVmaW5lZCBpbiB0aGUgZmlsZS4KCkZvciBtb3JlIGRldGFpbHMsIHJldmlldyB0aGUgW2NsaS1vcHRpb25zIGV4YW1wbGVdKGh0dHBzOi8vZ2l0aHViLmNvbS9hcGlkZWNrLWxpYnJhcmllcy9wb3J0bWFuL3RyZWUvbWFpbi9leGFtcGxlcy9jbGktb3B0aW9ucykuCgojIyMjIyMgUnVuIE5ld21hbiB3aXRoIE5ld21hbiBvcHRpb25zCgpBbGwgW05ld21hbiBjb25maWd1cmF0aW9uIG9wdGlvbnNdKGh0dHBzOi8vbGVhcm5pbmcucG9zdG1hbi5jb20vZG9jcy9ydW5uaW5nLWNvbGxlY3Rpb25zL3VzaW5nLW5ld21hbi1jbGkvY29tbWFuZC1saW5lLWludGVncmF0aW9uLXdpdGgtbmV3bWFuLyNvcHRpb25zKSB0byBydW4gTmV3bWFuIGNhbiBiZSBwYXNzZWQgYWxvbmcgdGhyb3VnaCBQb3J0bWFuLgoKYGBgCnBvcnRtYW4gLXUgaHR0cHM6Ly9zcGVjcy5hcGlkZWNrLmNvbS9jcm0ueW1sIC1jIC4vdG1wL2NybS9wb3J0bWFuLWNvbmZpZy5qc29uIC0tcnVuTmV3bWFuIC0tbmV3bWFuT3B0aW9uc0ZpbGUgLi90bXAvY3JtL25ld21hbi1vcHRpb25zLmpzb24KYGBgCgpGb3IgbW9yZSBkZXRhaWxzLCByZXZpZXcgdGhlIFtjbGktb3B0aW9ucyBleGFtcGxlXShodHRwczovL2dpdGh1Yi5jb20vYXBpZGVjay1saWJyYXJpZXMvcG9ydG1hbi90cmVlL21haW4vZXhhbXBsZXMvY2xpLW9wdGlvbnMpLgoKTk9URTogTmV3bWFuIGlzIHNldCB0byBpZ25vcmUgcmVkaXJlY3RzIHRvIGFsbG93IGZvciB0ZXN0aW5nIHJlZGlyZWN0IHJlc3BvbnNlIGNvZGVzLiBJZiB5b3UgYXJlIHJ1bm5pbmcgY29sbGVjdGlvbnMgd2l0aGluIFBvc3RtYW4gVUksIHlvdSdsbCBuZWVkIHRvIGVuc3VyZSBQb3N0bWFuIGlzIHNldCB0byB0aGUgc2FtZSwgb3IgeW91ciByZWRpcmVjdCB0ZXN0cyB3aWxsIGZhaWwuCgo+IFBvc3RtYW4gPiBQcmVmZXJlbmNlcyA+IEF1dG9tYXRpY2FsbHkgZm9sbG93IHJlZGlyZWN0cyA+IE9GRgoKIyMjIE91dHB1dAoKV2l0aG91dCBzcGVjaWZ5aW5nIHRoZSBvdXRwdXQgbG9jYXRpb24sIHlvdXIgZ2VuZXJhdGVkIFBvc3RtYW4gQ29sbGVjdGlvbiBpcyB3cml0dGVuIHRvIGAuL3RtcC9jb252ZXJ0ZWQvJHtzcGVjTmFtZX0uanNvbmAgaWYgeW91IGFyZSBtYW51YWxseSBpbXBvcnRpbmcgdG8gUG9zdG1hbiBvciBuZWVkIHRvIGluc3BlY3QgZm9yIGRlYnVnZ2luZy4KCkJ5IHVzaW5nIGAtb2Agb3IgYC0tb3V0cHV0YCBwYXJhbWV0ZXIsIHlvdSBjYW4gZGVmaW5lIHRoZSBsb2NhdGlvbiB3aGVyZSB0aGUgUG9zdG1hbiBjb2xsZWN0aW9uIHdpbGwgYmUgd3JpdHRlbi4KCmBgYApwb3J0bWFuIC1sIC4vdG1wL3NwZWNzL2NybS55bWwgLW8gLi90bXAvc3BlY3MvY3JtLlBvc3RtYW4uanNvbgpgYGAKCiMjIFBvcnRtYW4gc2V0dGluZ3MKClRoZSBQb3J0bWFuIHNldHRpbmdzIGNvbnNpc3Qgb3V0IG9mIG11bHRpcGxlIHBhcnRzOgoKLSAqKnZlcnNpb24qKiA6IHdoaWNoIHJlZmVycyB0byB0aGUgSlNPTiBQb3J0bWFuIGNvbmZpZ3VyYXRpb24gdmVyc2lvbi4KLSAqKnRlc3RzKiogOiB3aGljaCByZWZlcnMgdG8gdGhlIGRlZmluaXRpb25zIGZvciB0aGUgZ2VuZXJhdGVkIGNvbnRyYWN0ICYgdmFyaWFuY2UgdGVzdHMuCiAgLSAqKmNvbnRyYWN0VGVzdHMqKiA6IHJlZmVycyB0byB0aGUgb3B0aW9ucyB0byBlbmFibGVkIGF1dG9nZW5lcmF0ZWQgY29udHJhY3QgdGVzdHMuCiAgLSAqKmNvbnRlbnRUZXN0cyoqIDogcmVmZXJzIHRvIHRoZSBhZGRpdGlvbmFsIFBvc3RtYW4gdGVzdHMgdGhhdCBjaGVjayB0aGUgY29udGVudC4KICAtICoqdmFyaWF0aW9uVGVzdHMqKiA6IHJlZmVycyB0byB0aGUgb3B0aW9ucyB0byBkZWZpbmUgdmFyaWF0aW9uIHRlc3RzLgogIC0gKippbnRlZ3JhdGlvblRlc3RzKiogOiByZWZlcnMgdG8gdGhlIG9wdGlvbnMgdG8gZGVmaW5lIGludGVncmF0aW9uIHRlc3RzLgogIC0gKipleHRlbmRUZXN0cyoqIDogcmVmZXJzIHRvIHRoZSBjdXN0b20gYWRkaXRpb25zIG9mIG1hbnVhbGx5IGNyZWF0ZWQgUG9zdG1hbiB0ZXN0cy4KLSAqKmFzc2lnblZhcmlhYmxlcyoqIDogd2hpY2ggcmVmZXJzIHRvIHNldHRpbmcgUG9zdG1hbiBjb2xsZWN0aW9uIHZhcmlhYmxlcyBmb3IgZWFzaWVyIGF1dG9tYXRpb24uCi0gKipvdmVyd3JpdGVzKiogOiB3aGljaCByZWZlcnMgdG8gdGhlIGN1c3RvbSBhZGRpdGlvbnMvbW9kaWZpY2F0aW9ucyBvZiB0aGUgT3BlbkFQSS9Qb3N0bWFuIHJlcXVlc3QgZGF0YS4KLSAqKm9wZXJhdGlvblByZVJlcXVlc3RTY3JpcHRzKiogOiB3aGljaCByZWZlcnMgdG8gaW5qZWN0aW5nIFBvc3RtYW4gUHJlLXJlcXVlc3QgU2NyaXB0cyBmb3IgcmVxdWVzdHMuCi0gKipnbG9iYWxzKiogOiB3aGljaCByZWZlcnMgdG8gdGhlIGN1c3RvbWl6YXRpb24gdGhhdCBhcHBsaWVzIGZvciB0aGUgd2hvbGUgUG9zdG1hbiBjb2xsZWN0aW9uLgoKIyMjIFBvcnRtYW4gdGFyZ2V0aW5nCgpJdCBpcyBwb3NzaWJsZSB0byBpbmplY3QgUG9zdG1hbiB0ZXN0cyBhbmQgcHJlLXJlZ2lzdGVyIHNjcmlwdHMsIGFzc2lnbiB2YXJpYWJsZXMgYW5kIG92ZXJ3cml0ZSBxdWVyeSBwYXJhbXMsIGhlYWRlcnMsIHJlcXVlc3QgYm9keSBkYXRhIHdpdGggdmFsdWVzLgoKVG8gYmUgYWJsZSB0byBkbyB0aGlzIHZlcnkgc3BlY2lmaWNhbGx5LCB0aGVyZSBhcmUgb3B0aW9ucyB0byBkZWZpbmUgdGhlIHRhcmdldHM6CgotICoqb3BlbkFwaU9wZXJhdGlvbklkIChTdHJpbmcpKiogOiBSZWZlcmVuY2VzIHRvIHRoZSBPcGVuQVBJIG9wZXJhdGlvbklkLCBleGFtcGxlOiBgbGVhZHNBbGxgCi0gKipvcGVuQXBpT3BlcmF0aW9uSWRzIChBcnJheSkqKiA6IFJlZmVyZW5jZXMgdG8gYW4gYXJyYXkgb2YgT3BlbkFQSSBvcGVyYXRpb25JZHMsIGV4YW1wbGU6IGBbJ2xlYWRzQWxsJywgJ2NvbXBhbmllc0FsbCcsICdjb250YWN0c0FsbCddYAotICoqb3BlbkFwaU9wZXJhdGlvbiAoU3RyaW5nKSoqIDogUmVmZXJlbmNlcyB0byBhIGNvbWJpbmF0aW9uIG9mIHRoZSBPcGVuQVBJIG1ldGhvZCAmIHBhdGgsIGV4YW1wbGU6IGBHRVQ6Oi9jcm0vbGVhZHNgCgotICoqZXhjbHVkZUZvck9wZXJhdGlvbnMgKEFycmF5KSoqIDogUmVmZXJlbmNlcyB0byBPcGVuQVBJIG9wZXJhdGlvbnMgdGhhdCB3aWxsIGJlIHNraXBwZWQgZm9yIHRhcmdldGluZy4gSXQgc3VwcG9ydHMgYm90aCB0aGUgYG9wZW5BcGlPcGVyYXRpb25JZGAgYW5kIGBvcGVuQXBpT3BlcmF0aW9uYCBmb3JtYXQsIGV4YW1wbGU6IGBbImxlYWRzQWRkIiwgIkdFVDo6L2NybS9sZWFkcy97aWR9Il1gCgpBbiBgb3BlbkFwaU9wZXJhdGlvbklkYCBpcyBhbiBvcHRpb25hbCBwcm9wZXJ0eS4gVG8gb2ZmZXIgc3VwcG9ydCBmb3IgT3BlbkFQSSBkb2N1bWVudHMgdGhhdCBkb24ndCBoYXZlIG9wZXJhdGlvbklkcywgd2UKaGF2ZSBhZGRlZCB0aGUgYG9wZW5BcGlPcGVyYXRpb25gIGRlZmluaXRpb24sIHdoaWNoIGlzIHRoZSB1bmlxdWUgY29tYmluYXRpb24gb2YgdGhlIE9wZW5BUEkgbWV0aG9kICYgcGF0aCwgd2l0aCBhIGA6OmAKc2VwYXJhdG9yIHN5bWJvbC4gVGhlIHRhcmdldGluZyBvcHRpb24gYGV4Y2x1ZGVGb3JPcGVyYXRpb25zYCBpcyByZWFsbHkgdXNlZnVsIHdoZW4gdXNpbmcgd2lsZGNhcmRzLCB0byBhbGxvdyBleGNsdXNpb25zIGZyb20gdGhlIHdpbGRjYXJkLgoKVGhpcyB3aWxsIGFsbG93IHRhcmdldGluZyBmb3IgdmVyeSBzcGVjaWZpYyBPcGVuQVBJIGl0ZW1zLgoKVG8gZmFjaWxpdGF0ZSBtYW5hZ2luZyB0aGUgZmlsdGVyaW5nLCB3ZSBoYXZlIGluY2x1ZGVkIHdpbGRjYXJkIG9wdGlvbnMgZm9yIHRoZSBgb3BlbkFwaU9wZXJhdGlvbmAgb3B0aW9uLCBzdXBwb3J0aW5nCnRoZSBtZXRob2RzICYgcGF0aCBkZWZpbml0aW9ucy4KClJFTUFSSzogQmUgc3VyZSB0byBwdXQgcXVvdGVzIGFyb3VuZCB0aGUgdGFyZ2V0IGRlZmluaXRpb24uCgotICoqU3RyaWN0IG1hdGNoaW5nKiogZXhhbXBsZTogYCJvcGVuQXBpT3BlcmF0aW9uIjogIkdFVDo6L2NybS9sZWFkcyIsYAogIFRoaXMgd2lsbCB0YXJnZXQgb25seSB0aGUgIkdFVCIgbWV0aG9kIGFuZCB0aGUgc3BlY2lmaWMgcGF0aCAiL2NybS9sZWFkcyIKCi0gKipNZXRob2Qgd2lsZGNhcmQgbWF0Y2hpbmcqKiBleGFtcGxlOiBgIm9wZW5BcGlPcGVyYXRpb24iOiAiKjo6L2NybS9sZWFkcyIsYAogIFRoaXMgd2lsbCB0YXJnZXQgYWxsIG1ldGhvZHMgKCdnZXQnLCAncHV0JywgJ3Bvc3QnLCAnZGVsZXRlJywgJ29wdGlvbnMnLCAnaGVhZCcsICdwYXRjaCcsICd0cmFjZScpIGFuZCB0aGUgc3BlY2lmaWMKICBwYXRoICIvY3JtL2xlYWRzIgoKLSAqKlBhdGggd2lsZGNhcmQgbWF0Y2hpbmcqKiBleGFtcGxlOiBgIm9wZW5BcGlPcGVyYXRpb24iOiAiR0VUOjovY3JtLyoiYAogIFRoaXMgd2lsbCB0YXJnZXQgb25seSB0aGUgIkdFVCIgbWV0aG9kIGFuZCBhbnkgcGF0aCBtYXRjaGluZyBhbnkgZm9sZGVyIGJlaGluZCB0aGUgIi9jcm0iLCBsaWtlICIvY3JtL2NvbXBhbmllcyIgYW5kCiAgIi9jcm0vbGVhZHMiLgoKLSAqKk1ldGhvZCAmIFBhdGggd2lsZGNhcmQgbWF0Y2hpbmcqKiBleGFtcGxlOiBgIm9wZW5BcGlPcGVyYXRpb24iOiAiKjo6L2NybS8qIixgCiAgQSBjb21iaW5hdGlvbiBvZiB3aWxkY2FyZHMgZm9yIHRoZSBtZXRob2QgYW5kIHBhdGggcGFydHMgaXMgZXZlbiBwb3NzaWJsZS4KCiMjIyBQb3J0bWFuIC0gYHRlc3RzYCBwcm9wZXJ0aWVzCgpUaGUgUG9ydG1hbiBgdGVzdHNgIGlzIHdoZXJlIHlvdSB3b3VsZCBkZWZpbmUgdGhlIHRlc3RzIHRoYXQgd291bGQgYmUgYXBwbGljYWJsZSBhbmQgYXV0b21hdGljYWxseSBnZW5lcmF0ZWQgYnkgUG9ydG1hbiwgYmFzZWQgb24gdGhlIE9wZW5BUEkgZG9jdW1lbnQuClRoZSBjb250cmFjdCB0ZXN0cyBhcmUgZ3JvdXBlZCBpbiBhbiBhcnJheSBvZiBgY29udHJhY3RUZXN0c2AuCgojIyMjIGNvbnRyYWN0VGVzdHMgb3B0aW9ucwoKLSAqKm9wZW5BcGlPcGVyYXRpb25JZCAoU3RyaW5nKSoqIDogUmVmZXJlbmNlcyB0byB0aGUgT3BlbkFQSSBvcGVyYXRpb25JZC4gKGV4YW1wbGU6IGBsZWFkc0FsbGApCi0gKipvcGVuQXBpT3BlcmF0aW9uSWRzIChBcnJheSkqKiA6IFJlZmVyZW5jZXMgdG8gYW4gYXJyYXkgb2YgT3BlbkFQSSBvcGVyYXRpb25JZHMsIGV4YW1wbGU6IGBbJ2xlYWRzQWxsJywgJ2NvbXBhbmllc0FsbCcsICdjb250YWN0c0FsbCddYAotICoqb3BlbkFwaU9wZXJhdGlvbiAoU3RyaW5nKSoqIDogUmVmZXJlbmNlcyB0byBhIGNvbWJpbmF0aW9uIG9mIHRoZSBPcGVuQVBJIG1ldGhvZCAmIHBhdGggKGV4YW1wbGU6IGBHRVQ6Oi9jcm0vbGVhZHNgKQotICoqZXhjbHVkZUZvck9wZXJhdGlvbnMgKEFycmF5IHwgb3B0aW9uYWwpKiogOiBSZWZlcmVuY2VzIHRvIE9wZW5BUEkgb3BlcmF0aW9ucyB0aGF0IHdpbGwgYmUgc2tpcHBlZCBmb3IgdGFyZ2V0aW5nLCBleGFtcGxlOiBgWyJsZWFkc0FkZCIsICJHRVQ6Oi9jcm0vbGVhZHMve2lkfSJdYAoKLSAqKnN0YXR1c1N1Y2Nlc3MgKEJvb2xlYW4pKiogOiBBZGRzIHRoZSB0ZXN0IGlmIHRoZSByZXNwb25zZSBvZiB0aGUgUG9zdG1hbiByZXF1ZXN0IHJldHVybmVkIGEgMnh4Ci0gKipzdGF0dXNDb2RlIChCb29sZWFuLCBIVFRQIGNvZGUpKiogOiBBZGRzIHRoZSB0ZXN0IGlmIHRoZSByZXNwb25zZSBvZiB0aGUgUG9zdG1hbiByZXF1ZXN0IHJldHVybiBhIHNwZWNpZmljIHN0YXR1cyBjb2RlLgotICoqcmVzcG9uc2VUaW1lIChCb29sZWFuKSoqIDogQWRkcyB0aGUgdGVzdCB0byB2ZXJpZnkgaWYgdGhlIHJlc3BvbnNlIG9mIHRoZSBQb3N0bWFuIHJlcXVlc3QgaXMgcmV0dXJuZWQgd2l0aGluIGEgbnVtYmVyIG9mIG1zLgogIC0gKiptYXhNcyAobnVtYmVyKSoqIDogRGVmaW5lIHRoZSBleHBlY3RlZCBudW1iZXIgb2YgbXMgZm9yIHRoZSBgcmVzcG9uc2VUaW1lYCBjaGVjay4KLSAqKmNvbnRlbnRUeXBlIChCb29sZWFuKSoqIDogQWRkcyB0aGUgdGVzdCBpZiB0aGUgcmVzcG9uc2UgaGVhZGVyIGlzIG1hdGNoaW5nIHRoZSBleHBlY3RlZCBjb250ZW50LXR5cGUgZGVmaW5lZCBpbiB0aGUgT3BlbkFQSSBzcGVjLgotICoqanNvbkJvZHkgKEJvb2xlYW4pKiogOiBBZGRzIHRoZSB0ZXN0IGlmIHRoZSByZXNwb25zZSBib2R5IGlzIG1hdGNoaW5nIHRoZSBleHBlY3RlZCBjb250ZW50LXR5cGUgZGVmaW5lZCBpbiB0aGUgT3BlbkFQSSBzcGVjLgotICoqc2NoZW1hVmFsaWRhdGlvbiAoQm9vbGVhbikqKiA6IEFkZHMgdGhlIHRlc3QgaWYgdGhlIHJlc3BvbnNlIGJvZHkgaXMgbWF0Y2hpbmcgdGhlIEpTT04gc2NoZW1hIGRlZmluZWQgaW4gdGhlIE9wZW5BUEkgc3BlYy4gVGhlIEpTT04gc2NoZW1hIGlzIGluc2VydGVkIGlubGluZSBpbiB0aGUgUG9zdG1hbiB0ZXN0LgogIC0gKiphZGRpdGlvbmFsUHJvcGVydGllcyAoQm9vbGVhbikqKiA6IEV4dGVuZCB0aGUgZXhwZWN0ZWQgSlNPTiBzY2hlbWEgdXNlZCBmb3IgdGhlIGBzY2hlbWFWYWxpZGF0aW9uYCBieSBzZXR0aW5nIGFsbCB0aGUgYGFkZGl0aW9uYWxQcm9wZXJ0aWVzYC4KLSAqKmhlYWRlcnNQcmVzZW50IChCb29sZWFuKSoqIDogQWRkcyB0aGUgdGVzdCB0byB2ZXJpZnkgaWYgdGhlIFBvc3RtYW4gcmVzcG9uc2UgaGVhZGVyIGhhcyB0aGUgcmVxdWlyZWQgaGVhZGVyIG5hbWVzIHByZXNlbnQsIGxpa2UgZGVmaW5lZCBpbiB0aGUgT3BlbkFQSSBzcGVjLgoKRm9yIG1vcmUgZGV0YWlscywgcmV2aWV3IHRoZSBbY29udHJhY3QtdGVzdHMgZXhhbXBsZV0oaHR0cHM6Ly9naXRodWIuY29tL2FwaWRlY2stbGlicmFyaWVzL3BvcnRtYW4vdHJlZS9tYWluL2V4YW1wbGVzL3Rlc3RzdWl0ZS1jb250cmFjdC10ZXN0cykuCgojIyMjIHZhcmlhdGlvblRlc3RzIG9wdGlvbnMKCi0gKipvcGVuQXBpT3BlcmF0aW9uSWQgKFN0cmluZykqKiA6IFJlZmVyZW5jZXMgdG8gdGhlIE9wZW5BUEkgb3BlcmF0aW9uSWQgZm9yIHdoaWNoIGEgdmFyaWF0aW9uIHdpbGwgYmUgY3JlYXRlZC4gKGV4YW1wbGU6IGBsZWFkc0FsbGApCi0gKipvcGVuQXBpT3BlcmF0aW9uSWRzIChBcnJheSkqKiA6IFJlZmVyZW5jZXMgdG8gYW4gYXJyYXkgb2YgT3BlbkFQSSBvcGVyYXRpb25JZHMsIGV4YW1wbGU6IGBbJ2xlYWRzQWxsJywgJ2NvbXBhbmllc0FsbCcsICdjb250YWN0c0FsbCddYAotICoqb3BlbkFwaU9wZXJhdGlvbiAoU3RyaW5nKSoqIDogUmVmZXJlbmNlcyB0byBhIGNvbWJpbmF0aW9uIG9mIHRoZSBPcGVuQVBJIG1ldGhvZCAmIHBhdGggZm9yIHdoaWNoIGEgdmFyaWF0aW9uIHdpbGwgYmUgY3JlYXRlZC4gKGV4YW1wbGU6IGBHRVQ6Oi9jcm0vbGVhZHNgKQotICoqZXhjbHVkZUZvck9wZXJhdGlvbnMgKEFycmF5IHwgb3B0aW9uYWwpKiogOiBSZWZlcmVuY2VzIHRvIE9wZW5BUEkgb3BlcmF0aW9ucyB0aGF0IHdpbGwgYmUgc2tpcHBlZCBmb3IgdGFyZ2V0aW5nLCBleGFtcGxlOiBgWyJsZWFkc0FkZCIsICJHRVQ6Oi9jcm0vbGVhZHMve2lkfSJdYAotICoqb3BlbkFwaVJlc3BvbnNlIChTdHJpbmcgfCBvcHRpb25hbCkqKiA6IFJlZmVyZW5jZXMgdG8gdGhlIE9wZW5BUEkgcmVzcG9uc2Ugb2JqZWN0IGNvZGUvbmFtZSBmb3Igd2hpY2ggYSB2YXJpYXRpb24gd2lsbCBiZSBjcmVhdGVkLiAoZXhhbXBsZTogYCI0MDQiYCkuIElmIG5vdCBkZWZpbmVkLCB0aGUgMXN0IHJlc3BvbnNlIG9iamVjdCBmcm9tIE9wZW5BUEkgd2lsbCBiZSB0YWtlbiBhcyBleHBlY3RlZCByZXNwb25zZS4gSWYgdGhlIGNvbmZpZ3VyZWQgYG9wZW5BcGlSZXNwb25zZWAgY29kZSBpcyBub3QgZGVmaW5lZCBpbiB0aGUgT3BlbkFQSSBkb2N1bWVudCwgUG9ydG1hbiB3aWxsIG5vdCBnZW5lcmF0ZSBhIHZhcmlhdGlvbiBmb3IgdGhlIHRhcmdldGVkIG9wZXJhdGlvbnMuCgotICoqb3ZlcndyaXRlcyoqIDogd2hpY2ggcmVmZXJzIHRvIHRoZSBjdXN0b20gYWRkaXRpb25zL21vZGlmaWNhdGlvbnMgb2YgdGhlIE9wZW5BUEkvUG9zdG1hbiByZXF1ZXN0IGRhdGEsIHNwZWNpZmljYWxseSBmb3IgdGhlIHZhcmlhdGlvbi4KLSAqKmZ1enppbmcqKiA6IEZ1enogdGVzdGluZyBzZXRzIHVuZXhwZWN0ZWQgdmFsdWVzIGZvciBBUEkgcmVxdWVzdHMsIHRvIGNhdXNlIHVuZXhwZWN0ZWQgYmVoYXZpb3IgYW5kIGVycm9ycyBpbiB0aGUgQVBJIHJlc3BvbnNlLgotICoqdGVzdHMqKiA6IHdoaWNoIHJlZmVycyB0byB0aGUgZGVmaW5pdGlvbnMgZm9yIHRoZSBnZW5lcmF0ZWQgY29udHJhY3QgJiB2YXJpYW5jZSB0ZXN0cyBmb3IgdGhlIHZhcmlhdGlvbi4KICAtICoqY29udHJhY3RUZXN0cyoqIDogcmVmZXJzIHRvIHRoZSBvcHRpb25zIHRvIGVuYWJsZWQgYXV0b2dlbmVyYXRlZCBjb250cmFjdCB0ZXN0cyBmb3IgdGhlIHZhcmlhdGlvbi4KICAtICoqY29udGVudFRlc3RzKiogOiByZWZlcnMgdG8gdGhlIGFkZGl0aW9uYWwgUG9zdG1hbiB0ZXN0cyB0aGF0IGNoZWNrIHRoZSBjb250ZW50IGZvciB0aGUgdmFyaWF0aW9uLgogIC0gKipleHRlbmRUZXN0cyoqIDogcmVmZXJzIHRvIHRoZSBjdXN0b20gYWRkaXRpb25zIG9mIG1hbnVhbCBjcmVhdGVkIFBvc3RtYW4gdGVzdHMgdG8gYmUgaW5jbHVkZWQgaW4gdGhlIHZhcmlhdGlvbi4KLSAqKmFzc2lnblZhcmlhYmxlcyoqIDogVGhpcyByZWZlcnMgdG8gc2V0dGluZyBQb3N0bWFuIGNvbGxlY3Rpb24gdmFyaWFibGVzIHRoYXQgYXJlIGFzc2lnbmVkIGJhc2VkIG9uIHZhcmlhdGlvbi4KCkZvciBtb3JlIGRldGFpbHMsIHJldmlldyB0aGUgW2NvbnRlbnQtdmFyaWF0aW9uIGV4YW1wbGVdKGh0dHBzOi8vZ2l0aHViLmNvbS9hcGlkZWNrLWxpYnJhcmllcy9wb3J0bWFuL3RyZWUvbWFpbi9leGFtcGxlcy90ZXN0c3VpdGUtdmFyaWF0aW9uLXRlc3RzKS4KCiMjIyMgaW50ZWdyYXRpb25UZXN0cyBvcHRpb25zCgotICoqbmFtZSAoU3RyaW5nKSoqIDogQXMgSW50ZWdyYXRpb24gdGVzdHMgd2lsbCBub3JtYWxseSBjb250YWluIG11bHRpcGxlIG9wZXJhdGlvbnMsIHRoaXMgaXMgdGhlIGZvbGRlciBuYW1lIHRoYXQgd2lsbCBiZSBnZW5lcmF0ZWQgaW4gdGhlIEludGVncmF0aW9uIFRlc3RzIGZvbGRlciBpbiB5b3VyIFBvc3RtYW4gY29sbGVjdGlvbi4KLSAqKm9wZXJhdGlvbnMgKEFycmF5KSoqIDogQXJyYXkgb2Ygb3BlcmF0aW9ucyB0byBiZSBwZXJmb3JtZWQKCiMjIyBQb3J0bWFuIC0gYGNvbnRlbnRUZXN0c2AgcHJvcGVydGllcwoKQ29udGVudCB0ZXN0cyB3aWxsIHZhbGlkYXRlIGlmIHRoZSByZXNwb25zZSBwcm9wZXJ0eSB2YWx1ZXMgd2lsbCBtYXRjaCB0aGUgZXhwZWN0ZWQgZGVmaW5lZCB2YWx1ZXMuCldoaWxlIHRoZSBQb3J0bWFuIGB0ZXN0c2AgdmVyaWZ5IHRoZSAiY29udHJhY3QiIG9mIHRoZSBBUEksIHRoZSBgY29udGVudFRlc3RzYCB3aWxsIHZlcmlmeSB0aGUgY29udGVudCBvZiB0aGUgQVBJLgoKIyMjIyBjb250ZW50VGVzdHMgb3B0aW9ucwoKLSAqKm9wZW5BcGlPcGVyYXRpb25JZCAoU3RyaW5nKSoqIDogUmVmZXJlbmNlcyB0byB0aGUgT3BlbkFQSSBvcGVyYXRpb25JZC4gKGV4YW1wbGU6IGBsZWFkc0FsbGApCi0gKipvcGVuQXBpT3BlcmF0aW9uSWRzIChBcnJheSkqKiA6IFJlZmVyZW5jZXMgdG8gYW4gYXJyYXkgb2YgT3BlbkFQSSBvcGVyYXRpb25JZHMsIGV4YW1wbGU6IGBbJ2xlYWRzQWxsJywgJ2NvbXBhbmllc0FsbCcsICdjb250YWN0c0FsbCddYAotICoqb3BlbkFwaU9wZXJhdGlvbiAoU3RyaW5nKSoqIDogUmVmZXJlbmNlcyB0byBhIGNvbWJpbmF0aW9uIG9mIHRoZSBPcGVuQVBJIG1ldGhvZCAmIHBhdGggKGV4YW1wbGU6IGBHRVQ6Oi9jcm0vbGVhZHNgKQotICoqZXhjbHVkZUZvck9wZXJhdGlvbnMgKEFycmF5IHwgb3B0aW9uYWwpKiogOiBSZWZlcmVuY2VzIHRvIE9wZW5BUEkgb3BlcmF0aW9ucyB0aGF0IHdpbGwgYmUgc2tpcHBlZCBmb3IgdGFyZ2V0aW5nLCBleGFtcGxlOiBgWyJsZWFkc0FkZCIsICJHRVQ6Oi9jcm0vbGVhZHMve2lkfSJdYAoKLSAqKnJlc3BvbnNlQm9keVRlc3RzIChBcnJheSkqKiA6IEFycmF5IG9mIGtleS92YWx1ZSBwYWlycyBvZiBwcm9wZXJ0aWVzICYgdmFsdWVzIGluIHRoZSBQb3N0bWFuIHJlc3BvbnNlIGJvZHkuCgogIC0gKiprZXkgKFN0cmluZykqKiA6IFRoZSBrZXkgdGhhdCB3aWxsIGJlIHRhcmdldGVkIGluIHRoZSByZXNwb25zZSBib2R5IHRvIGNoZWNrIGlmIGl0IGV4aXN0cy4gVG8gbG9vayB1cCBhIGtleSB3aXRoaW4gaW4gYXJyYXkgb2Ygb2JqZWN0cywgeW91IGNhbiB1c2UgYW4gYXJyYXkgaW5kZXggKGV4YW1wbGUgYGRhdGEud2Vic2l0ZXNbMF0udXJsYCkgb3IgYSAqIHdpbGRjYXJkIChleGFtcGxlOiBgZGF0YS53ZWJzaXRlc1sqXS51cmxgKSB3aGljaCB1c2VzIHRoZSBgdmFsdWVgIHRvIG1hdGNoIGFuIG9iamVjdCBpbiBhbiBhcnJheS4gCiAgLSAqKnZhbHVlIChTdHJpbmcpKiogOiBUaGUgdmFsdWUgdGhhdCB3aWxsIGJlIHVzZWQgdG8gY2hlY2sgaWYgdGhlIHZhbHVlIGluIHRoZSByZXNwb25zZSBib2R5IHByb3BlcnR5IG1hdGNoZXMuCiAgLSAqKmNvbnRhaW5zIChTdHJpbmcpKiogOiBUaGUgdmFsdWUgdGhhdCB3aWxsIGJlIHVzZWQgdG8gY2hlY2sgaWYgdGhlIHZhbHVlIGlzIHByZXNlbnQgaW4gdGhlIHZhbHVlIG9mIHRoZSByZXNwb25zZSBib2R5IHByb3BlcnR5LgogIC0gKipvbmVPZiAoU3RyaW5nW10sTnVtYmVyW10sQm9vbGVhbltdKSoqIDogVGhlIHZhbHVlIHRoYXQgd2lsbCBiZSB1c2VkIHRvIGNoZWNrIG9uZSBvZiB0aGUgdmFsdWVzIGlzIG1hdGNoaW5nIHRoZSByZXNwb25zZSBib2R5IHByb3BlcnR5LgogIC0gKipsZW5ndGggKE51bWJlcikqKiA6IFRoZSBudW1iZXIgdGhhdCB3aWxsIGJlIHVzZWQgdG8gY2hlY2sgaWYgdGhlIHZhbHVlIG9mIHRoZSByZXNwb25zZSBib2R5IHByb3BlcnR5IChzdHJpbmcvYXJyYXkpIGhhcyBhIGxlbmd0aCBvZiB0aGUgZGVmaW5lZCBudW1iZXIuCiAgLSAqKm1pbkxlbmd0aCAoTnVtYmVyKSoqIDogVGhlIG51bWJlciB0aGF0IHdpbGwgYmUgdXNlZCB0byBjaGVjayBpZiB0aGUgdmFsdWUgb2YgdGhlIHJlc3BvbnNlIGJvZHkgcHJvcGVydHkgKHN0cmluZy9hcnJheSkgaGFzIGEgbWluaW11bSBsZW5ndGggb2YgdGhlIGRlZmluZWQgbnVtYmVyLgogIC0gKiptYXhMZW5ndGggKE51bWJlcikqKiA6IFRoZSBudW1iZXIgdGhhdCB3aWxsIGJlIHVzZWQgdG8gY2hlY2sgaWYgdGhlIHZhbHVlIG9mIHRoZSByZXNwb25zZSBib2R5IHByb3BlcnR5IChzdHJpbmcvYXJyYXkpIGhhcyBhIG1heGltdW0gbGVuZ3RoIG9mIHRoZSBkZWZpbmVkIG51bWJlci4KICAtICoqbm90RXhpc3QgKEJvb2xlYW4pKiogOiBUaGUgaW52ZXJzZSBvZiB0aGUga2V5IGNoZWNrIHRoYXQgdmVyaWZ5IGlmIHRoZSBrZXkgZG9lcyBub3QgZXhpc3QgaW4gdGhlIHJlc3BvbnNlIGJvZHkuCiAgLSAqKmFzc2VydCAoU3RyaW5nKSoqIDogQSBjdXN0b20gUG9zdG1hbiBhc3NlcnRpb24gdG8gY2hlY2sgaWYgdGhlIHZhbHVlIGluIHRoZSByZXNwb25zZSBib2R5IHByb3BlcnR5IG1hdGNoZXMgd2l0aCB0aGUgcHJvdmlkZWQgYXNzZXJ0aW9uIChleGFtcGxlOiBgbm90LnRvLmJlLm51bGxgKS4KICAKLSAqKnJlc3BvbnNlSGVhZGVyVGVzdHMgKEFycmF5KSoqIDogQXJyYXkgb2Yga2V5L3ZhbHVlIHBhaXJzIG9mIHByb3BlcnRpZXMgJiB2YWx1ZXMgaW4gdGhlIFBvc3RtYW4gcmVzcG9uc2UgaGVhZGVyLgogIC0gKiprZXkgKFN0cmluZykqKiA6IFRoZSBoZWFkZXIgbmFtZSB0aGF0IHdpbGwgYmUgdGFyZ2V0ZWQgaW4gdGhlIHJlc3BvbnNlIGhlYWRlciB0byBjaGVjayBpZiBpdCBleGlzdHMuCiAgLSAqKnZhbHVlIChTdHJpbmcpKiogOiBUaGUgdmFsdWUgdGhhdCB3aWxsIGJlIHVzZWQgdG8gY2hlY2sgaWYgdGhlIHZhbHVlIGluIHRoZSByZXNwb25zZSBoZWFkZXIgbWF0Y2hlcy4KICAtICoqY29udGFpbnMgKFN0cmluZykqKiA6IFRoZSB2YWx1ZSB0aGF0IHdpbGwgYmUgdXNlZCB0byBjaGVjayBpZiB0aGUgdmFsdWUgaXMgcHJlc2VudCBpbiB0aGUgdmFsdWUgb2YgdGhlIHJlc3BvbnNlIGhlYWRlci4KICAtICoqb25lT2YgKFN0cmluZ1tdLE51bWJlcltdLEJvb2xlYW5bXSkqKiA6IFRoZSB2YWx1ZSB0aGF0IHdpbGwgYmUgdXNlZCB0byBjaGVjayBvbmUgb2YgdGhlIHZhbHVlcyBpcyBtYXRjaGluZyB0aGUgdmFsdWUgb2YgdGhlIHJlc3BvbnNlIGhlYWRlci4KICAtICoqbGVuZ3RoIChOdW1iZXIpKiogOiBUaGUgbnVtYmVyIHRoYXQgd2lsbCBiZSB1c2VkIHRvIGNoZWNrIGlmIHRoZSB2YWx1ZSBvZiB0aGUgcmVzcG9uc2UgaGVhZGVyIGhhcyBhIGxlbmd0aCBvZiB0aGUgZGVmaW5lZCBudW1iZXIgb2YgY2hhcmFjdGVycy4KICAtICoqbWluTGVuZ3RoIChOdW1iZXIpKiogOiBUaGUgbnVtYmVyIHRoYXQgd2lsbCBiZSB1c2VkIHRvIGNoZWNrIGlmIHRoZSB2YWx1ZSBvZiB0aGUgcmVzcG9uc2UgaGVhZGVyIGhhcyBhIG1pbmltdW0gbGVuZ3RoIG9mIHRoZSBkZWZpbmVkIG51bWJlciBvZiBjaGFyYWN0ZXJzLgogIC0gKiptYXhMZW5ndGggKE51bWJlcikqKiA6IFRoZSBudW1iZXIgdGhhdCB3aWxsIGJlIHVzZWQgdG8gY2hlY2sgaWYgdGhlIHZhbHVlIG9mIHRoZSByZXNwb25zZSBoZWFkZXIgaGFzIGEgbWF4aW11bSBsZW5ndGggb2YgdGhlIGRlZmluZWQgbnVtYmVyIG9mIGNoYXJhY3RlcnMuCiAgLSAqKm5vdEV4aXN0IChCb29sZWFuKSoqIDogVGhlIGludmVyc2Ugb2YgdGhlIGtleSBjaGVjayB0aGF0IHZlcmlmeSBpZiB0aGUga2V5IGRvZXMgbm90IGV4aXN0IGluIHRoZSByZXNwb25zZSBoZWFkZXIuCiAgLSAqKmFzc2VydCAoU3RyaW5nKSoqIDogQSBjdXN0b20gUG9zdG1hbiBhc3NlcnRpb24gdG8gY2hlY2sgaWYgdGhlIHZhbHVlIGluIHRoZSByZXNwb25zZSBoZWFkZXIgbWF0Y2hlcyB3aXRoIHRoZSBwcm92aWRlZCBhc3NlcnRpb24gKGV4YW1wbGU6IGBub3QudG8uYmUubnVsbGApLgoKRm9yIG1vcmUgZGV0YWlscywgcmV2aWV3IHRoZSBbY29udGVudC10ZXN0cyBleGFtcGxlXShodHRwczovL2dpdGh1Yi5jb20vYXBpZGVjay1saWJyYXJpZXMvcG9ydG1hbi90cmVlL21haW4vZXhhbXBsZXMvdGVzdHN1aXRlLWNvbnRlbnQtdGVzdHMpLgoKIyMjIFBvcnRtYW4gLSBgZXh0ZW5kVGVzdHNgIHByb3BlcnRpZXMKCldoZW4geW91IG5lZWQgdG8gYWRkIGFkZGl0aW9uYWwgdGVzdHMgb3Igb3ZlcndyaXRlIHRoZSBQb3J0bWFuLWdlbmVyYXRlZCB0ZXN0LCB5b3UgY2FuIHVzZSB0aGUgYGV4dGVuZFRlc3RzYCB0byBkZWZpbmUgdGhlIHJhdyBQb3N0bWFuIHRlc3RzLgpBbnl0aGluZyBhZGRlZCBpbiB0aGUgYHRlc3RzYCBhcnJheSB3aWxsIGJlIGFkZGVkIHRvIHRoZSBQb3N0bWFuIHRlc3Qgc2NyaXB0cy4KCiMjIyMgZXh0ZW5kVGVzdHMgb3B0aW9ucwoKLSAqKm9wZW5BcGlPcGVyYXRpb25JZCAoU3RyaW5nKSoqIDogUmVmZXJlbmNlcyB0byB0aGUgT3BlbkFQSSBvcGVyYXRpb25JZC4gKGV4YW1wbGU6IGBsZWFkc0FsbGApCi0gKipvcGVuQXBpT3BlcmF0aW9uSWRzIChBcnJheSkqKiA6IFJlZmVyZW5jZXMgdG8gYW4gYXJyYXkgb2YgT3BlbkFQSSBvcGVyYXRpb25JZHMsIGV4YW1wbGU6IGBbJ2xlYWRzQWxsJywgJ2NvbXBhbmllc0FsbCcsICdjb250YWN0c0FsbCddYAotICoqb3BlbkFwaU9wZXJhdGlvbiAoU3RyaW5nKSoqIDogUmVmZXJlbmNlcyB0byBhIGNvbWJpbmF0aW9uIG9mIHRoZSBPcGVuQVBJIG1ldGhvZCAmIHBhdGggKGV4YW1wbGU6IGBHRVQ6Oi9jcm0vbGVhZHNgKQotICoqZXhjbHVkZUZvck9wZXJhdGlvbnMgKEFycmF5IHwgb3B0aW9uYWwpKiogOiBSZWZlcmVuY2VzIHRvIE9wZW5BUEkgb3BlcmF0aW9ucyB0aGF0IHdpbGwgYmUgc2tpcHBlZCBmb3IgdGFyZ2V0aW5nLCBleGFtcGxlOiBgWyJsZWFkc0FkZCIsICJHRVQ6Oi9jcm0vbGVhZHMve2lkfSJdYAoKLSAqKnRlc3RzIChBcnJheSkqKiA6IEFycmF5IG9mIGFkZGl0aW9uYWwgUG9zdG1hbiB0ZXN0IHNjcmlwdHMuICBWYWx1ZXMgY2FuIGJlIHRoZSBzY3JpcHQgY29udGVudCBvciBwYXRoIHRvIHRoZSBzY3JpcHQgZmlsZSAod2l0aCBgZmlsZTpgIHByZWZpeCkuCi0gKipvdmVyd3JpdGUgKEJvb2xlYW4gdHJ1ZS9mYWxzZSB8IERlZmF1bHQ6IGZhbHNlKSoqIDogUmVzZXRzIGFsbCBnZW5lcmF0ZVRlc3RzIGFuZCBvdmVyd3JpdGVzIHRoZW0gd2l0aCB0aGUgZGVmaW5lZCB0ZXN0cyBmcm9tCiAgdGhlIGB0ZXN0c2AgYXJyYXkuCi0gKiphcHBlbmQgKEJvb2xlYW4gdHJ1ZS9mYWxzZSB8IERlZmF1bHQ6IHRydWUpKiogOiBQbGFjZSB0aGUgdGVzdHMgYWZ0ZXIgKGFwcGVuZCkgb3IgYmVmb3JlIChwcmVwZW5kKSBhbGwgZ2VuZXJhdGVkIHRlc3RzLgoKPGhyPgoKIyMjIFBvcnRtYW4gLSBgYXNzaWduVmFyaWFibGVzYCBwcm9wZXJ0aWVzCgpUaGUgImFzc2lnblZhcmlhYmxlcyIgYWxsb3dzIHlvdSB0byBzZXQgUG9zdG1hbiBjb2xsZWN0aW9uIHZhcmlhYmxlcyBmb3IgZWFzaWVyIGF1dG9tYXRpb24uCgojIyMjIGFzc2lnblZhcmlhYmxlcyBvcHRpb25zCgotICoqb3BlbkFwaU9wZXJhdGlvbklkIChTdHJpbmcpKiogOiBSZWZlcmVuY2UgdG8gdGhlIE9wZW5BUEkgb3BlcmF0aW9uSWQgZm9yIHdoaWNoIHRoZSBQb3N0bWFuIHBtLmNvbGxlY3Rpb25WYXJpYWJsZXMgd2lsbCBiZSBzZXQuIChleGFtcGxlOiBgbGVhZHNBbGxgKQotICoqb3BlbkFwaU9wZXJhdGlvbklkcyAoQXJyYXkpKiogOiBSZWZlcmVuY2VzIHRvIGFuIGFycmF5IG9mIE9wZW5BUEkgb3BlcmF0aW9uSWRzLCBmb3Igd2hpY2ggdGhlIFBvc3RtYW4gcG0uY29sbGVjdGlvblZhcmlhYmxlcyB3aWxsIGJlIHNldC4gZXhhbXBsZTogYFsnbGVhZHNBbGwnLCAnY29tcGFuaWVzQWxsJywgJ2NvbnRhY3RzQWxsJ11gCi0gKipvcGVuQXBpT3BlcmF0aW9uIChTdHJpbmcpKiogOiBSZWZlcmVuY2UgdG8gdGhlIGNvbWJpbmF0aW9uIG9mIHRoZSBPcGVuQVBJIG1ldGhvZCAmIHBhdGgsIGZvciB3aGljaCB0aGUgUG9zdG1hbiBwbS5jb2xsZWN0aW9uVmFyaWFibGVzIHdpbGwgYmUgc2V0LiAoZXhhbXBsZTogYEdFVDo6L2NybS9sZWFkc2ApCi0gKipleGNsdWRlRm9yT3BlcmF0aW9ucyAoQXJyYXkgfCBvcHRpb25hbCkqKiA6IFJlZmVyZW5jZXMgdG8gT3BlbkFQSSBvcGVyYXRpb25zIHRoYXQgd2lsbCBiZSBza2lwcGVkIGZvciB0YXJnZXRpbmcsIGV4YW1wbGU6IGBbImxlYWRzQWRkIiwgIkdFVDo6L2NybS9sZWFkcy97aWR9Il1gCgotICoqY29sbGVjdGlvblZhcmlhYmxlcyAoQXJyYXkpKiogOiBBcnJheSBvZiBrZXkvdmFsdWUgcGFpcnMgdG8gc2V0IHRoZSBQb3N0bWFuIGNvbGxlY3Rpb24gdmFyaWFibGVzLgogIC0gKipyZXNwb25zZUJvZHlQcm9wIChTdHJpbmcpKiogOiBUaGUgcHJvcGVydHkgZm9yIHdoaWNoIHRoZSB2YWx1ZSB3aWxsIGJlIHRha2VuIGZyb20gdGhlIHJlc3BvbnNlIGJvZHkgYW5kIHNldCB0aGUgdmFsdWUgYXMgdGhlIHBtLmNvbGxlY3Rpb25WYXJpYWJsZXMgdmFsdWUuIFRvIHN0b3JlIHRoZSByb290IGxldmVsLCB1c2UgYC5gIGFzIGtleS4KICAtICoqcmVzcG9uc2VIZWFkZXJQcm9wIChTdHJpbmcpKiogOiBUaGUgcHJvcGVydHkgZm9yIHdoaWNoIHRoZSB2YWx1ZSB3aWxsIGJlIHRha2VuIGZyb20gdGhlIHJlc3BvbnNlIGhlYWRlciBhbmQgc2V0IHRoZSB2YWx1ZSBhcyB0aGUgcG0uY29sbGVjdGlvblZhcmlhYmxlcyB2YWx1ZS4KICAtICoqcmVxdWVzdEJvZHlQcm9wIChTdHJpbmcpKiogOiBUaGUgcHJvcGVydHkgZm9yIHdoaWNoIHRoZSB2YWx1ZSB3aWxsIGJlIHRha2VuIGZyb20gdGhlIHJlcXVlc3QgYm9keSBhbmQgc2V0IHRoZSB2YWx1ZSBhcyB0aGUgcG0uY29sbGVjdGlvblZhcmlhYmxlcyB2YWx1ZS4KICAtICoqdmFsdWUgKFN0cmluZykqKiA6IFRoZSBkZWZpbmVkIHZhbHVlIHRoYXQgd2lsbCBiZSBzZXQgYXMgdGhlIHBtLmNvbGxlY3Rpb25WYXJpYWJsZXMgdmFsdWUuIFRoZSB2YWx1ZSBjYW4gYmUgZ2VuZXJhdGVkIHVzaW5nIHRlbXBsYXRlIGV4cHJlc3Npb25zLiAgRm9yIHRoZSBmdWxsIGxpc3Qgb2YgdGVtcGxhdGUgZXhwcmVzc2lvbnMsIGNoZWNrIHRoZSBbQXNzaWduICYgT3ZlcndyaXRlIGV4YW1wbGVdKGh0dHBzOi8vZ2l0aHViLmNvbS9hcGlkZWNrLWxpYnJhcmllcy9wb3J0bWFuL3RyZWUvbWFpbi9leGFtcGxlcy90ZXN0c3VpdGUtYXNzaWduLW92ZXJ3cml0ZSN0ZW1wbGF0ZS1leHByZXNzaW9ucykKICAtICoqbmFtZSAoc3RyaW5nIE9QVElPTkFMIHwgIERlZmF1bHQ6IDxvcGVyYXRpb25JZD4uPHZhclByb3A+KSoqIDogVGhlIGRlc2lyZWQgbmFtZSB0aGF0IHdpbGwgYmUgdXNlZCB0byBhcyB0aGUgUG9zdG1hbiB2YXJpYWJsZSBuYW1lLiBJZiB0aGUgYG5hbWVgIGlzIG5vdCBwcm92aWRlZCwgUG9ydG1hbiB3aWxsIGdlbmVyYXRlIGEgdmFyaWFibGUgbmFtZSwgdXNpbmcgdGhlIGA8b3BlcmF0aW9uSWQ+Ljx2YXJQcm9wPmAuIFlvdSBjYW4gcGFzcyB5b3VyIG93biB0ZW1wbGF0ZSBleHByZXNzaW9ucywgdG8gZHluYW1pY2FsbHkgZ2VuZXJhdGUgdmFyaWFibGUgbmFtZXMuIFRoZSB0ZW1wbGF0ZSBjYW4gY29udGFpbiB0aGUgZm9sbG93aW5nIGR5bmFtaWMgZXhwcmVzc2lvbnM6IGA8b3BlcmF0aW9uSWQ+YCByZXN1bHRzIGluIHRoZSBPcGVuQVBJIG9wZXJhdGlvbiBJRCAoZXhhbXBsZSBgbGVhZHNBZGRgKSwgYDxwYXRoPmAgcmVzdWx0cyBpbiB0aGUgT3BlbkFQSSBvcGVyYXRpb24gSUQgKGV4YW1wbGUgYC9jcm0vbGVhZHNgKSwgYDxwYXRoUmVmPmAgcmVzdWx0cyBpbiB0aGUgUG9ydG1hbiBvcGVyYXRpb24gKGV4YW1wbGUgYFBPU1Q6Oi9jcm0vbGVhZHNfUE9TVGApLCBgPG1ldGhvZD5gIHJlc3VsdHMgaW4gdGhlIE9wZW5BUEkgbWV0aG9kIChleGFtcGxlIGBHRVRgKSwgYDxvcHNSZWY+YCByZXN1bHRzIGluIHRoZSBPcGVuQVBJIGBvcGVyYXRpb25JZGAgd2l0aCBhIGZhbGxiYWNrIHRvIHRoZSBgcGF0aFJlZmAgaW4gY2FzZSB0aGUgT3BlbkFQSSBkb2VzIG5vdCBjb250YWluIGFuIG9wZXJhdGlvbiBJRC4gRm9yIHRoZSBmdWxsIGxpc3Qgb2YgZHluYW1pYyBleHByZXNzaW9ucywgY2hlY2sgdGhlIFtBc3NpZ24gJiBPdmVyd3JpdGUgZXhhbXBsZV0oaHR0cHM6Ly9naXRodWIuY29tL2FwaWRlY2stbGlicmFyaWVzL3BvcnRtYW4vdHJlZS9tYWluL2V4YW1wbGVzL3Rlc3RzdWl0ZS1hc3NpZ24tb3ZlcndyaXRlI3RlbXBsYXRlLWV4cHJlc3Npb25zKS4KCkZvciBtb3JlIGRldGFpbHMsIHJldmlldyB0aGUgW0Fzc2lnbiB2YXJpYWJsZXMgZXhhbXBsZV0oaHR0cHM6Ly9naXRodWIuY29tL2FwaWRlY2stbGlicmFyaWVzL3BvcnRtYW4vdHJlZS9tYWluL2V4YW1wbGVzL3Rlc3RzdWl0ZS1hc3NpZ24tdmFyaWFibGVzKSBhbmQgW0Fzc2lnbiAmIE92ZXJ3cml0ZSBleGFtcGxlXShodHRwczovL2dpdGh1Yi5jb20vYXBpZGVjay1saWJyYXJpZXMvcG9ydG1hbi90cmVlL21haW4vZXhhbXBsZXMvdGVzdHN1aXRlLWFzc2lnbi1vdmVyd3JpdGUjdGVtcGxhdGUtZXhwcmVzc2lvbnMpLgoKPGhyPgoKIyMjIFBvcnRtYW4gLSBgb3ZlcndyaXRlc2AgcHJvcGVydGllcwoKVG8gZmFjaWxpdGF0ZSBhdXRvbWF0aW9uLCB5b3UgbWlnaHQgd2FudCB0byBtb2RpZnkgcHJvcGVydGllcyB3aXRoICJyYW5kb21pemVkIiBvciBzcGVjaWZpYyB2YWx1ZXMuIFRoZSBvdmVyd3JpdGVzIGFyZSBtYXBwZWQgYmFzZWQgb24gdGhlIE9wZW5BUEkgb3BlcmF0aW9uSWQgb3IgT3BlbkFQSSBPcGVyYXRpb24gcmVmZXJlbmNlLgoKIyMjIyBvdmVyd3JpdGVzIG9wdGlvbnMKCi0gKipvcGVuQXBpT3BlcmF0aW9uSWQgKFN0cmluZykqKiA6IFJlZmVyZW5jZSB0byB0aGUgT3BlbkFQSSBvcGVyYXRpb25JZCBmb3Igd2hpY2ggdGhlIFBvc3RtYW4gcmVxdWVzdCB3aWxsIGJlIG92ZXJ3cml0dGVuIG9yIGV4dGVuZGVkLiAoZXhhbXBsZTogYGxlYWRzQWxsYCkKLSAqKm9wZW5BcGlPcGVyYXRpb25JZHMgKEFycmF5KSoqIDogUmVmZXJlbmNlcyB0byBhbiBhcnJheSBvZiBPcGVuQVBJIG9wZXJhdGlvbklkcywgZm9yIHdoaWNoIHRoZSBQb3N0bWFuIHJlcXVlc3Qgd2lsbCBiZSBvdmVyd3JpdHRlbiBvciBleHRlbmRlZCAoZXhhbXBsZTogYFsnbGVhZHNBbGwnLCAnY29tcGFuaWVzQWxsJywgJ2NvbnRhY3RzQWxsJ11gKQotICoqb3BlbkFwaU9wZXJhdGlvbiAoU3RyaW5nKSoqIDogUmVmZXJlbmNlIHRvIGNvbWJpbmF0aW9uIG9mIHRoZSBPcGVuQVBJIG1ldGhvZCAmIHBhdGgsIGZvciB3aGljaCB0aGUgUG9zdG1hbiByZXF1ZXN0IHdpbGwgYmUgb3ZlcndyaXR0ZW4gb3IgZXh0ZW5kZWQgKGV4YW1wbGU6IGBHRVQ6Oi9jcm0vbGVhZHNgKQotICoqZXhjbHVkZUZvck9wZXJhdGlvbnMgKEFycmF5IHwgb3B0aW9uYWwpKiogOiBSZWZlcmVuY2VzIHRvIE9wZW5BUEkgb3BlcmF0aW9ucyB0aGF0IHdpbGwgYmUgc2tpcHBlZCBmb3IgdGFyZ2V0aW5nLiAoZXhhbXBsZTogYFsibGVhZHNBZGQiLCAiR0VUOjovY3JtL2xlYWRzL3tpZH0iXWApCgotICoqb3ZlcndyaXRlUmVxdWVzdEJhc2VVcmwgKE9iamVjdCkqKiA6CgogIEtleS92YWx1ZSBwYWlyIHRvIG92ZXJ3cml0ZSB0aGUgUG9zdG1hbiBSZXF1ZXN0IEJhc2UgVVJMLgoKICAtICoqdmFsdWUgKFN0cmluZykqKiA6IFRoZSB2YWx1ZSB0aGF0IHdpbGwgYmUgdXNlZCB0byBvdmVyd3JpdGUvZXh0ZW5kIHRoZSB2YWx1ZSBpbiB0aGUgcmVxdWVzdCBiYXNlIFVSTC4gKGV4YW1wbGU6IGBodHRwczovL2V4YW1wbGUuY29tYCBvciBge3tiYXNlVXJsfX1gKS4KICAtICoqb3ZlcndyaXRlIChCb29sZWFuIHRydWUvZmFsc2UgfCBEZWZhdWx0OiB0cnVlKSoqIDogT3ZlcndyaXRlcyB0aGUgcmVxdWVzdCBiYXNlIFVSTCB2YWx1ZSBPUiBhdHRhY2ggdGhlIHZhbHVlIHRvIHRoZSBvcmlnaW5hbCByZXF1ZXN0IGJhc2UgVVJMIHZhbHVlLgogIC0gKipyZW1vdmUgKEJvb2xlYW4gdHJ1ZS9mYWxzZSB8IERlZmF1bHQ6IGZhbHNlKSoqIDogUmVtb3ZlcyB0aGUgdGFyZ2V0ZWQgcmVxdWVzdCBiYXNlIFVSTCBmcm9tIFBvc3RtYW4uCgotICoqb3ZlcndyaXRlUmVxdWVzdFF1ZXJ5UGFyYW1zIChBcnJheSkqKiA6CgogIEFycmF5IG9mIGtleS92YWx1ZSBwYWlycyB0byBvdmVyd3JpdGUgaW4gdGhlIFBvc3RtYW4gUmVxdWVzdCBRdWVyeSBwYXJhbXMuCgogIC0gKiprZXkgKFN0cmluZykqKiA6IFRoZSBrZXkgdGhhdCB3aWxsIGJlIHRhcmdldGVkIGluIHRoZSByZXF1ZXN0IFF1ZXJ5IFBhcmFtIHRvIG92ZXJ3cml0ZS9leHRlbmQuIFN1cHBvcnRzIHdpbGRjYXJkICogdG8gbWF0Y2ggYW55IHNlcXVlbmNlIG9mIGNoYXJhY3RlcnMuIEZvciBleGFtcGxlLCBgZmlsdGVyWypdYCBtYXRjaGVzIGBmaWx0ZXJbMF1gLCBgZmlsdGVyWzFdYCwgZXRjLgogIC0gKip2YWx1ZSAoU3RyaW5nKSoqIDogVGhlIHZhbHVlIHRoYXQgd2lsbCBiZSB1c2VkIHRvIG92ZXJ3cml0ZS9leHRlbmQgdGhlIHZhbHVlIGluIHRoZSByZXF1ZXN0IFF1ZXJ5IFBhcmFtIE9SIHVzZSB0aGUgW1Bvc3RtYW4gRHluYW1pYyB2YXJpYWJsZXNdKGh0dHBzOi8vbGVhcm5pbmcuUG9zdG1hbi5jb20vZG9jcy93cml0aW5nLXNjcmlwdHMvc2NyaXB0LXJlZmVyZW5jZXMvdmFyaWFibGVzLWxpc3QvKSB0byB1c2UgZHluYW1pYyB2YWx1ZXMgbGlrZSBge3skZ3VpZH19YCBvciBge3skcmFuZG9tSW50fX1gLiBTdXBwb3J0cyBhbHNvIHRlbXBsYXRpbmcgdG8gZ2VuZXJhdGUgdmFyaWFibGUgbmFtZXMuIFRoZSB0ZW1wbGF0ZSBjYW4gY29udGFpbiB0aGUgZm9sbG93aW5nIGR5bmFtaWMgZXhwcmVzc2lvbnM6IGA8b3BlcmF0aW9uSWQ+YCByZXN1bHRzIGluIHRoZSBPcGVuQVBJIG9wZXJhdGlvbiBJRCAoZXhhbXBsZSBgbGVhZHNBZGRgKSwgYDxwYXRoPmAgcmVzdWx0cyBpbiB0aGUgT3BlbkFQSSBvcGVyYXRpb24gSUQgKGV4YW1wbGUgYC9jcm0vbGVhZHNgKSwgYDxwYXRoUmVmPmAgcmVzdWx0cyBpbiB0aGUgUG9ydG1hbiBvcGVyYXRpb24gKGV4YW1wbGUgYFBPU1Q6Oi9jcm0vbGVhZHNfUE9TVGApLCBgPG1ldGhvZD5gIHJlc3VsdHMgaW4gdGhlIE9wZW5BUEkgbWV0aG9kIChleGFtcGxlIGBHRVRgKSwgYDxvcHNSZWY+YCByZXN1bHRzIGluIHRoZSBPcGVuQVBJIGBvcGVyYXRpb25JZGAgd2l0aCBhIGZhbGxiYWNrIHRvIHRoZSBgcGF0aFJlZmAgaW4gY2FzZSB0aGUgT3BlbkFQSSBkb2VzIG5vdCBjb250YWluIGFuIG9wZXJhdGlvbiBJRC4gRm9yIHRoZSBmdWxsIGxpc3Qgb2YgZHluYW1pYyBleHByZXNzaW9ucywgY2hlY2sgdGhlIFtBc3NpZ24gJiBPdmVyd3JpdGUgZXhhbXBsZV0oaHR0cHM6Ly9naXRodWIuY29tL2FwaWRlY2stbGlicmFyaWVzL3BvcnRtYW4vdHJlZS9tYWluL2V4YW1wbGVzL3Rlc3RzdWl0ZS1hc3NpZ24tb3ZlcndyaXRlI3RlbXBsYXRlLWV4cHJlc3Npb25zKS4KICAtICoqb3ZlcndyaXRlIChCb29sZWFuIHRydWUvZmFsc2UgfCBEZWZhdWx0OiB0cnVlKSoqIDogT3ZlcndyaXRlcyB0aGUgcmVxdWVzdCBxdWVyeSBwYXJhbSB2YWx1ZSBPUiBhdHRhY2ggdGhlIHZhbHVlIHRvIHRoZSBvcmlnaW5hbCByZXF1ZXN0IHF1ZXJ5IHBhcmFtIHZhbHVlLgogIC0gKipkaXNhYmxlIChCb29sZWFuIHRydWUvZmFsc2UgfCBEZWZhdWx0OiBmYWxzZSkqKiA6IERpc2FibGVzIHRoZSByZXF1ZXN0IHF1ZXJ5IHBhcmFtIGluIFBvc3RtYW4uCiAgLSAqKnJlbW92ZSAoQm9vbGVhbiB0cnVlL2ZhbHNlIHwgRGVmYXVsdDogZmFsc2UpKiogOiBSZW1vdmVzIHRoZSB0YXJnZXRlZCByZXF1ZXN0IHF1ZXJ5IHBhcmFtIGZyb20gUG9zdG1hbi4KICAtICoqaW5zZXJ0IChCb29sZWFuIHRydWUvZmFsc2UgfCBEZWZhdWx0OiB0cnVlKSoqIDogSW5zZXJ0IGFkZGl0aW9uYWwgdGhlIHJlcXVlc3QgcXVlcnkgcGFyYW0gaW4gUG9zdG1hbiB0aGF0IGFyZSBub3QgcHJlc2VudCBpbiBPcGVuQVBJLgogIC0gKipkZXNjcmlwdGlvbiAoU3RyaW5nKSoqIDogT3ZlcndyaXRlcyB0aGUgcmVxdWVzdCBxdWVyeSBwYXJhbSBkZXNjcmlwdGlvbiBpbiBQb3N0bWFuLgoKLSAqKm92ZXJ3cml0ZVJlcXVlc3RQYXRoVmFyaWFibGVzIChBcnJheSkqKiA6CgogIEFycmF5IG9mIGtleS92YWx1ZSBwYWlycyB0byBvdmVyd3JpdGUgaW4gdGhlIFBvc3RtYW4gUmVxdWVzdCBQYXRoIFZhcmlhYmxlcy4KCiAgLSAqKmtleSAoU3RyaW5nKSoqIDogVGhlIGtleSB0aGF0IHdpbGwgYmUgdGFyZ2V0ZWQgaW4gdGhlIHJlcXVlc3QgUGF0aCB2YXJpYWJsZXMgdG8gb3ZlcndyaXRlL2V4dGVuZC4KICAtICoqdmFsdWUgKFN0cmluZykqKiA6IFRoZSB2YWx1ZSB0aGF0IHdpbGwgYmUgdXNlZCB0byBvdmVyd3JpdGUvZXh0ZW5kIHRoZSB2YWx1ZSBpbiB0aGUgcmVxdWVzdCBwYXRoIHZhcmlhYmxlIE9SIHVzZSB0aGUgW1Bvc3RtYW4gRHluYW1pYyB2YXJpYWJsZXNdKGh0dHBzOi8vbGVhcm5pbmcuUG9zdG1hbi5jb20vZG9jcy93cml0aW5nLXNjcmlwdHMvc2NyaXB0LXJlZmVyZW5jZXMvdmFyaWFibGVzLWxpc3QvKSB0byB1c2UgZHluYW1pYyB2YWx1ZXMgbGlrZSBge3skZ3VpZH19YCBvciBge3skcmFuZG9tSW50fX1gLiBTdXBwb3J0cyBhbHNvIHRlbXBsYXRpbmcgdG8gZ2VuZXJhdGUgdmFyaWFibGUgbmFtZXMuIFRoZSB0ZW1wbGF0ZSBjYW4gY29udGFpbiB0aGUgZm9sbG93aW5nIGR5bmFtaWMgZXhwcmVzc2lvbnM6IGA8b3BlcmF0aW9uSWQ+YCByZXN1bHRzIGluIHRoZSBPcGVuQVBJIG9wZXJhdGlvbiBJRCAoZXhhbXBsZSBgbGVhZHNBZGRgKSwgYDxwYXRoPmAgcmVzdWx0cyBpbiB0aGUgT3BlbkFQSSBvcGVyYXRpb24gSUQgKGV4YW1wbGUgYC9jcm0vbGVhZHNgKSwgYDxwYXRoUmVmPmAgcmVzdWx0cyBpbiB0aGUgUG9ydG1hbiBvcGVyYXRpb24gKGV4YW1wbGUgYFBPU1Q6Oi9jcm0vbGVhZHNfUE9TVGApLCBgPG1ldGhvZD5gIHJlc3VsdHMgaW4gdGhlIE9wZW5BUEkgbWV0aG9kIChleGFtcGxlIGBHRVRgKSwgYDxvcHNSZWY+YCByZXN1bHRzIGluIHRoZSBPcGVuQVBJIGBvcGVyYXRpb25JZGAgd2l0aCBhIGZhbGxiYWNrIHRvIHRoZSBgcGF0aFJlZmAgaW4gY2FzZSB0aGUgT3BlbkFQSSBkb2VzIG5vdCBjb250YWluIGFuIG9wZXJhdGlvbiBJRC4gRm9yIHRoZSBmdWxsIGxpc3Qgb2YgZHluYW1pYyBleHByZXNzaW9ucywgY2hlY2sgdGhlIFtBc3NpZ24gJiBPdmVyd3JpdGUgZXhhbXBsZV0oaHR0cHM6Ly9naXRodWIuY29tL2FwaWRlY2stbGlicmFyaWVzL3BvcnRtYW4vdHJlZS9tYWluL2V4YW1wbGVzL3Rlc3RzdWl0ZS1hc3NpZ24tb3ZlcndyaXRlI3RlbXBsYXRlLWV4cHJlc3Npb25zKS4KICAtICoqb3ZlcndyaXRlIChCb29sZWFuIHRydWUvZmFsc2UgfCBEZWZhdWx0OiB0cnVlKSoqIDogT3ZlcndyaXRlcyB0aGUgcmVxdWVzdCBwYXRoIHZhcmlhYmxlIHZhbHVlIE9SIGF0dGFjaGVzIHRoZSB2YWx1ZSB0byB0aGUgb3JpZ2luYWwgcmVxdWVzdCBQYXRoIHZhcmlhYmxlIHZhbHVlLgogIC0gKipyZW1vdmUgKEJvb2xlYW4gdHJ1ZS9mYWxzZSB8IERlZmF1bHQ6IGZhbHNlKSoqIDogUmVtb3ZlcyB0aGUgdGFyZ2V0ZWQgcmVxdWVzdCBwYXRoIHZhcmlhYmxlIGZyb20gUG9zdG1hbi4KICAtICoqaW5zZXJ0IChCb29sZWFuIHRydWUvZmFsc2UgfCBEZWZhdWx0OiB0cnVlKSoqIDogSW5zZXJ0IGFkZGl0aW9uYWwgdGhlIHJlcXVlc3QgcGF0aCB2YXJpYWJsZSBpbiBQb3N0bWFuIHRoYXQgYXJlIG5vdCBwcmVzZW50IGluIE9wZW5BUEkuCiAgLSAqKmRlc2NyaXB0aW9uIChTdHJpbmcpKiogOiBPcHRpb25hbCwgT3ZlcndyaXRlcyB0aGUgcmVxdWVzdCBwYXRoIHZhcmlhYmxlIGRlc2NyaXB0aW9uIGluIFBvc3RtYW4uCgotICoqb3ZlcndyaXRlUmVxdWVzdEhlYWRlcnMgKEFycmF5KSoqIDoKCiAgQXJyYXkgb2Yga2V5L3ZhbHVlIHBhaXJzIHRvIG92ZXJ3cml0ZSBpbiB0aGUgUG9zdG1hbiBSZXF1ZXN0IEhlYWRlcnMuCgogIC0gKiprZXkgKFN0cmluZykqKiA6IFRoZSBrZXkgdGhhdCB3aWxsIGJlIHRhcmdldGVkIGluIHRoZSByZXF1ZXN0IEhlYWRlcnMgdG8gb3ZlcndyaXRlL2V4dGVuZC4KICAtICoqdmFsdWUgKFN0cmluZykqKiA6IFRoZSB2YWx1ZSB0aGF0IHdpbGwgYmUgdXNlZCB0byBvdmVyd3JpdGUvZXh0ZW5kIHRoZSB2YWx1ZSBpbiB0aGUgcmVxdWVzdCBoZWFkZXJzIE9SIHVzZSB0aGUgW1Bvc3RtYW4gRHluYW1pYyB2YXJpYWJsZXNdKGh0dHBzOi8vbGVhcm5pbmcuUG9zdG1hbi5jb20vZG9jcy93cml0aW5nLXNjcmlwdHMvc2NyaXB0LXJlZmVyZW5jZXMvdmFyaWFibGVzLWxpc3QvKSB0byB1c2UgZHluYW1pYyB2YWx1ZXMgbGlrZSBge3skZ3VpZH19YCBvciBge3skcmFuZG9tSW50fX1gLiBTdXBwb3J0cyBhbHNvIHRlbXBsYXRpbmcgdG8gZ2VuZXJhdGUgdmFyaWFibGUgbmFtZXMuIFRoZSB0ZW1wbGF0ZSBjYW4gY29udGFpbiB0aGUgZm9sbG93aW5nIGR5bmFtaWMgZXhwcmVzc2lvbnM6IGA8b3BlcmF0aW9uSWQ+YCByZXN1bHRzIGluIHRoZSBPcGVuQVBJIG9wZXJhdGlvbiBJRCAoZXhhbXBsZSBgbGVhZHNBZGRgKSwgYDxwYXRoPmAgcmVzdWx0cyBpbiB0aGUgT3BlbkFQSSBvcGVyYXRpb24gSUQgKGV4YW1wbGUgYC9jcm0vbGVhZHNgKSwgYDxwYXRoUmVmPmAgcmVzdWx0cyBpbiB0aGUgUG9ydG1hbiBvcGVyYXRpb24gKGV4YW1wbGUgYFBPU1Q6Oi9jcm0vbGVhZHNfUE9TVGApLCBgPG1ldGhvZD5gIHJlc3VsdHMgaW4gdGhlIE9wZW5BUEkgbWV0aG9kIChleGFtcGxlIGBHRVRgKSwgYDxvcHNSZWY+YCByZXN1bHRzIGluIHRoZSBPcGVuQVBJIGBvcGVyYXRpb25JZGAgd2l0aCBhIGZhbGxiYWNrIHRvIHRoZSBgcGF0aFJlZmAgaW4gY2FzZSB0aGUgT3BlbkFQSSBkb2VzIG5vdCBjb250YWluIGFuIG9wZXJhdGlvbiBJRC4gRm9yIHRoZSBmdWxsIGxpc3Qgb2YgZHluYW1pYyBleHByZXNzaW9ucywgY2hlY2sgdGhlIFtBc3NpZ24gJiBPdmVyd3JpdGUgZXhhbXBsZV0oaHR0cHM6Ly9naXRodWIuY29tL2FwaWRlY2stbGlicmFyaWVzL3BvcnRtYW4vdHJlZS9tYWluL2V4YW1wbGVzL3Rlc3RzdWl0ZS1hc3NpZ24tb3ZlcndyaXRlI3RlbXBsYXRlLWV4cHJlc3Npb25zKS4KICAtICoqb3ZlcndyaXRlIChCb29sZWFuIHRydWUvZmFsc2UgfCBEZWZhdWx0OiB0cnVlKSoqIDogT3ZlcndyaXRlcyB0aGUgcmVxdWVzdCBoZWFkZXIgdmFsdWUgT1IgYXR0YWNoZXMgdGhlIHZhbHVlIHRvIHRoZSBvcmlnaW5hbCByZXF1ZXN0IGhlYWRlciB2YWx1ZS4KICAtICoqZGlzYWJsZSAoQm9vbGVhbiB0cnVlL2ZhbHNlIHwgRGVmYXVsdDogZmFsc2UpKiogOiBEaXNhYmxlcyB0aGUgcmVxdWVzdCBoZWFkZXIgaW4gUG9zdG1hbi4KICAtICoqcmVtb3ZlIChCb29sZWFuIHRydWUvZmFsc2UgfCBEZWZhdWx0OiBmYWxzZSkqKiA6IFJlbW92ZXMgdGhlIHRhcmdldGVkIHJlcXVlc3QgaGVhZGVyIGZyb20gUG9zdG1hbi4KICAtICoqaW5zZXJ0IChCb29sZWFuIHRydWUvZmFsc2UgfCBEZWZhdWx0OiB0cnVlKSoqIDogSW5zZXJ0IHRoZSBhZGRpdGlvbmFsIHJlcXVlc3QgaGVhZGVyIGluIFBvc3RtYW4gdGhhdCBhcmUgbm90IHByZXNlbnQgaW4gT3BlbkFQSS4KICAtICoqZGVzY3JpcHRpb24gKFN0cmluZykqKiA6IE92ZXJ3cml0ZXMgdGhlIHJlcXVlc3QgaGVhZGVyIGRlc2NyaXB0aW9uIGluIFBvc3RtYW4uCgotICoqb3ZlcndyaXRlUmVxdWVzdEJvZHkgKEFycmF5KSoqIDoKCiAgQXJyYXkgb2Yga2V5L3ZhbHVlIHBhaXJzIHRvIG92ZXJ3cml0ZSBpbiB0aGUgUG9zdG1hbiBSZXF1ZXN0IEJvZHkuCgogICoqQXBwbGljYWJsZSBmb3IgcmVxdWVzdCBib2R5IHR5cGVzOiBKU09OL2Zvcm0tZGF0YS94LXd3dy1mb3JtLXVybGVuY29kZWQqKgogIC0gKiprZXkgKFN0cmluZykqKiA6IFRoZSBrZXkgdGhhdCB3aWxsIGJlIHRhcmdldGVkIGluIHRoZSByZXF1ZXN0IGJvZHkgdG8gb3ZlcndyaXRlL2V4dGVuZC4gVXNlIHRoZSBgLmAgbm90YXRpb24gdG8gdGFyZ2V0IG5lc3RlZCBwcm9wZXJ0aWVzLiBUbyB0YXJnZXQgdGhlIHJvb3QgbGV2ZWwsIHVzZSBgLmAgYXMga2V5LgogIC0gKip2YWx1ZSAoQW55KSoqIDogVGhlIHZhbHVlIHRoYXQgd2lsbCBiZSB1c2VkIHRvIG92ZXJ3cml0ZS9leHRlbmQgdGhlIGtleSBpbiB0aGUgcmVxdWVzdCBib2R5IE9SIHVzZSB0aGUgW1Bvc3RtYW4gRHluYW1pYyB2YXJpYWJsZXNdKGh0dHBzOi8vbGVhcm5pbmcuUG9zdG1hbi5jb20vZG9jcy93cml0aW5nLXNjcmlwdHMvc2NyaXB0LXJlZmVyZW5jZXMvdmFyaWFibGVzLWxpc3QvKSB0byB1c2UgZHluYW1pYyB2YWx1ZXMgbGlrZSBge3skZ3VpZH19YCBvciBge3skcmFuZG9tSW50fX1gLiBUaGUgdmFsdWUgY2FuIGJlIGEgdGV4dC9udW1iZXIvYm9vbGVhbi9hcnJheS9vYmplY3Qgb3IgUG9zdG1hbiB2YXJpYWJsZSAodG8gcGFzcyB0aGUgUG9zdG1hbiB2YXJpYWJsZSBhcyB0eXBlIGJvb2xlYW4gb3IgbnVtYmVyLCB1c2UgYHt7e3ZhcmlhYmxlTmFtZX19fWAgc3Vycm91bmRlZCBieSAzeCB7e3sgYW5kIDN4IH19fSkuIFN1cHBvcnRzIGFsc28gdGVtcGxhdGluZyB0byBnZW5lcmF0ZSB2YXJpYWJsZSBuYW1lcy4gVGhlIHRlbXBsYXRlIGNhbiBjb250YWluIHRoZSBmb2xsb3dpbmcgZHluYW1pYyBleHByZXNzaW9uczogYDxvcGVyYXRpb25JZD5gIHJlc3VsdHMgaW4gdGhlIE9wZW5BUEkgb3BlcmF0aW9uIElEIChleGFtcGxlIGBsZWFkc0FkZGApLCBgPHBhdGg+YCByZXN1bHRzIGluIHRoZSBPcGVuQVBJIG9wZXJhdGlvbiBJRCAoZXhhbXBsZSBgL2NybS9sZWFkc2ApLCBgPHBhdGhSZWY+YCByZXN1bHRzIGluIHRoZSBQb3J0bWFuIG9wZXJhdGlvbiAoZXhhbXBsZSBgUE9TVDo6L2NybS9sZWFkc19QT1NUYCksIGA8bWV0aG9kPmAgcmVzdWx0cyBpbiB0aGUgT3BlbkFQSSBtZXRob2QgKGV4YW1wbGUgYEdFVGApLCBgPG9wc1JlZj5gIHJlc3VsdHMgaW4gdGhlIE9wZW5BUEkgYG9wZXJhdGlvbklkYCB3aXRoIGEgZmFsbGJhY2sgdG8gdGhlIGBwYXRoUmVmYCBpbiBjYXNlIHRoZSBPcGVuQVBJIGRvZXMgbm90IGNvbnRhaW4gYW4gb3BlcmF0aW9uIElELiBGb3IgdGhlIGZ1bGwgbGlzdCBvZiBkeW5hbWljIGV4cHJlc3Npb25zLCBjaGVjayB0aGUgW0Fzc2lnbiAmIE92ZXJ3cml0ZSBleGFtcGxlXShodHRwczovL2dpdGh1Yi5jb20vYXBpZGVjay1saWJyYXJpZXMvcG9ydG1hbi90cmVlL21haW4vZXhhbXBsZXMvdGVzdHN1aXRlLWFzc2lnbi1vdmVyd3JpdGUjdGVtcGxhdGUtZXhwcmVzc2lvbnMpLgogIC0gKipvdmVyd3JpdGUgKEJvb2xlYW4gdHJ1ZS9mYWxzZSB8IERlZmF1bHQ6IHRydWUpKiogOiBPdmVyd3JpdGVzIHRoZSByZXF1ZXN0IGJvZHkgdmFsdWUgT1IgYXR0YWNoZXMgdGhlIHZhbHVlIHRvIHRoZSBvcmlnaW5hbCByZXF1ZXN0IGJvZHkgdmFsdWUuCiAgLSAqKnJlbW92ZSAoQm9vbGVhbiB0cnVlL2ZhbHNlIHwgRGVmYXVsdDogZmFsc2UpKiogOiBSZW1vdmVzIHRoZSByZXF1ZXN0IGJvZHkgcHJvcGVydHksIGluY2x1ZGluZyB0aGUgdmFsdWUuCgogICoqQXBwbGljYWJsZSBmb3IgcmVxdWVzdCBib2R5IHR5cGVzOiBmb3JtLWRhdGEveC13d3ctZm9ybS11cmxlbmNvZGVkKioKICAtICoqaW5zZXJ0IChCb29sZWFuIHRydWUvZmFsc2UgfCBEZWZhdWx0OiB0cnVlKSoqIDogSW5zZXJ0IHRoZSBhZGRpdGlvbmFsIHJlcXVlc3QgZm9ybSBrZXkvdmFsdWUgaW4gUG9zdG1hbiB0aGF0IGFyZSBub3QgcHJlc2VudCBpbiBPcGVuQVBJLgogIC0gKipkZXNjcmlwdGlvbiAoU3RyaW5nKSoqIDogT3ZlcndyaXRlcyB0aGUgcmVxdWVzdCBmb3JtIGRhdGEgZGVzY3JpcHRpb24gaW4gUG9zdG1hbi4KCi0gKipvdmVyd3JpdGVSZXF1ZXN0U2VjdXJpdHkgKE9iamVjdCkqKiA6CgogIEEgUG9zdG1hbiBSZXF1ZXN0QXV0aERlZmluaXRpb24gb2JqZWN0IHRoYXQgd2lsbCBiZSBhcHBsaWVkIHRvIHRoZSByZXF1ZXN0LlRoZSBzZWN1cml0eSBvdmVyd3JpdGVzIHByb3ZpZGVzIGEgbnVtYmVyIG9mIHNlY3VyaXR5IHR5cGVzOgoKICAtICoqcmVtb3ZlIChCb29sZWFuIHRydWUvZmFsc2UgfCBEZWZhdWx0OiBmYWxzZSkqKiA6IFVuc2V0cyB0aGUgQXV0aG9yaXphdGlvbiB0eXBlIGluIFBvc3RtYW4uCgogIC0gKiphcGlLZXkqKjogVGhlIEFQSSBrZXkgYXV0aCB3aWxsIHNlbmQgYSBrZXktdmFsdWUgcGFpciB0byB0aGUgQVBJIGVpdGhlciBpbiB0aGUgcmVxdWVzdCBoZWFkZXJzIG9yIHF1ZXJ5IHBhcmFtZXRlcnMuCiAgICAtICoqdmFsdWUgKFN0cmluZykqKiA6IFRoZSB2YWx1ZSB0aGF0IHdpbGwgYmUgaW5zZXJ0ZWQgYXMgdGhlIFBvc3RtYW4gYXBpS2V5IHZhbHVlLiBJdCBjYW4gYmUgYSBwbGFpbiB2YWx1ZSBvciBhIFBvc3RtYW4gdmFyaWFibGUuCiAgICAtICoqa2V5IChTdHJpbmcgfCBvcHRpb25hbCkqKiA6IFRoZSAia2V5IiB2YWx1ZSB0aGF0IHdpbGwgYmUgaW5zZXJ0ZWQgaW4gdGhlIFBvc3RtYW4gYXBpS2V5IGtleSBmaWVsZC4gSXQgY2FuIGJlIGEgcGxhaW4gdmFsdWUgb3IgYSBQb3N0bWFuIHZhcmlhYmxlLgogICAgLSAqKmluIChTdHJpbmcgfCBvcHRpb25hbCkqKiA6IFRoZSAiaW4iIHZhbHVlIHRoYXQgZGVmaW5lcyB3aGVyZSB0aGUgQXBpIEtleSB3aWxsIGJlIGFkZGVkIGluIHRoZSBQb3N0bWFuIHJlcXVlc3QgSGVhZGVyIG9yIFF1ZXJ5IHBhcmFtcy4gUG9zdG1hbiBzdXBwb3J0cyBgaGVhZGVyYCBmb3IgIkhlYWRlciIgb3IgYHF1ZXJ5YCBmb3IgIlF1ZXJ5IFBhcmFtcyIuCgogIGBgYGpzb24KICAib3ZlcndyaXRlUmVxdWVzdFNlY3VyaXR5IjogewogICAgICAgICJhcGlLZXkiOiB7CiAgICAgICAgICAidmFsdWUiOiAie3thcGlLZXl9fSIKICAgICAgICB9CiAgICAgIH0KICBgYGAKCiAgLSAqKmJlYXJlcioqOiBUaGUgYmVhcmVyIHRva2VucyBhbGxvdyByZXF1ZXN0cyB0byBhdXRoZW50aWNhdGUgdXNpbmcgYW4gYWNjZXNzIGtleSwgc3VjaCBhcyBhIEpTT04gV2ViIFRva2VuIChKV1QpLgogICAgLSAqKnRva2VuIChTdHJpbmcpKiogOiBUaGUgInRva2VuIiB0aGF0IHdpbGwgYmUgaW5zZXJ0ZWQgYXMgdGhlIFBvc3RtYW4gYmVhcmVyIHRva2VuIHZhbHVlLiBJdCBjYW4gYmUgYSBwbGFpbiB2YWx1ZSBvciBhIFBvc3RtYW4gdmFyaWFibGUuCgogIGBgYGpzb24KICAib3ZlcndyaXRlUmVxdWVzdFNlY3VyaXR5IjogewogICAgICAgICJiZWFyZXIiOiB7CiAgICAgICAgICAidG9rZW4iOiAie3tiZWFyZXJUb2tlbn19IgogICAgICAgIH0KICAgICAgfQogIGBgYAoKICAtICoqYmFzaWMqKjogQmFzaWMgYXV0aGVudGljYXRpb24gaW52b2x2ZXMgc2VuZGluZyBhIHZlcmlmaWVkIHVzZXJuYW1lIGFuZCBwYXNzd29yZCB3aXRoIHlvdXIgcmVxdWVzdC4KICAgIC0gKip1c2VybmFtZSAoU3RyaW5nKSoqIDogVGhlIHVzZXJuYW1lIHRoYXQgd2lsbCBiZSBpbnNlcnRlZCBhcyB0aGUgYmFzaWMgYXV0aGVudGljYXRpb24gdXNlcm5hbWUgdmFsdWUKICAgIC0gKipwYXNzd29yZCAoU3RyaW5nKSoqIDogVGhlIHBhc3N3b3JkIHRoYXQgd2lsbCBiZSBpbnNlcnRlZCBhcyB0aGUgYmFzaWMgYXV0aGVudGljYXRpb24gcGFzc3dvcmQgdmFsdWUKICAKICBgYGBqc29uCiAgIm92ZXJ3cml0ZVJlcXVlc3RTZWN1cml0eSI6IHsKICAgICAgICAiYmFzaWMiOiB7CiAgICAgICAgICAidXNlcm5hbWUiOiAie3t1c2VybmFtZX19IiwKICAgICAgICAgICJwYXNzd29yZCI6ICJ7e3Bhc3N3b3JkfX0iLAogICAgICAgIH0KICAgICAgfQogIGBgYAogIAogIC0gKipQb3N0bWFuIHNlY3VyaXR5IG9wdGlvbnMqKjogT3ZlcndyaXRlL0luc2VydCBQb3N0bWFuIGF1dGhvcml6YXRpb24gc2V0dGluZ3MuCiAgICAtICoqUG9zdG1hbiBUeXBlIChBcnJheSkqKiA6IFRoZSBQb3N0bWFuIGF1dGhvcml6YXRpb24gb3B0aW9uIHR5cGUuIFN1cHBvcnRlZCB0eXBlcyBhcmU6IGBhd3N2NGAsIGBkaWdlc3RgLCBgZWRnZWdyaWRgLCBgbnRsbWAsIGBvYXV0aDFgLCBgb2F1dGgyYAogICAgICAtICoqQXR0cmlidXRlcyoqIDoga2V5L3ZhbHVlL3R5cGUgYXMgZGVmaW5lZCBpbiBQb3N0bWFuICh0aGUgZWFzaWVzdCB3YXkgdG8gZGVmaW5lIGl0LCBpcyB0byBzZXQgaXQgbWFudWFsbHkgaW4gUG9zdG1hbiwgZXhwb3J0IHRoZSBjb2xsZWN0aW9uIGFuZCBleHRyYWN0IHRoZSBtYXRjaGluZyB2YWx1ZXMgZnJvbSB0aGUgSlNPTiBmaWxlKS4KCkZvciBtb3JlIGRldGFpbHMsIHJldmlldyB0aGUgW092ZXJ3cml0ZXMgZXhhbXBsZV0oaHR0cHM6Ly9naXRodWIuY29tL2FwaWRlY2stbGlicmFyaWVzL3BvcnRtYW4vdHJlZS9tYWluL2V4YW1wbGVzL3Rlc3RzdWl0ZS1vdmVyd3JpdGVzKSBhbmQgW0Fzc2lnbiAmIE92ZXJ3cml0ZSBleGFtcGxlXShodHRwczovL2dpdGh1Yi5jb20vYXBpZGVjay1saWJyYXJpZXMvcG9ydG1hbi90cmVlL21haW4vZXhhbXBsZXMvdGVzdHN1aXRlLWFzc2lnbi1vdmVyd3JpdGUjdGVtcGxhdGUtZXhwcmVzc2lvbnMpLgoKPGhyPgoKIyMjIFBvcnRtYW4gLSBgZnV6emluZ2AgcHJvcGVydGllcyAtIEJFVEEg8J+PlwoKTk9USUNFOiBUaGlzIGZlYXR1cmUgaXMgY29uc2lkZXJlZCBCRVRBLCBzaW5jZSB3ZSBhcmUgaW52ZXN0aWdhdGluZyBhZGRpdGlvbmFsIGZ1enppbmcgY2FwYWJpbGl0aWVzLgoKPiBGdXp6aW5nIG9yIGZ1enogdGVzdGluZyBpcyBhbiBhdXRvbWF0ZWQgc29mdHdhcmUgdGVzdGluZyB0ZWNobmlxdWUgdGhhdCBpbnZvbHZlcyBwcm92aWRpbmcgaW52YWxpZCwgdW5leHBlY3RlZCwgb3IgcmFuZG9tIGRhdGEgYXMgaW5wdXRzIHRvIGEgY29tcHV0ZXIgcHJvZ3JhbSAoYSBSRVNUIEFQSSBpbiB0aGUgY2FzZSBvZiBQb3J0bWFuKS4KCkZ1enppbmcgY2hhbmdlcyB0aGUgcmVxdWVzdHMgKGJvZHksIHF1ZXJ5IHBhcmFtcywgLi4uICkgdG8gdW5leHBlY3RlZCB2YWx1ZXMgaW4gYW4gZWZmb3J0IHRvIGNhdXNlIHVuZXhwZWN0ZWQgYmVoYXZpb3IgYW5kIGVycm9ycyBpbiB0aGUgQVBJIHJlc3BvbnNlLgpGb3IgUG9ydG1hbiwgd2Ugd2FudCB0byBwcm92aWRlIGEgc2ltcGxlIGZvcm0gb2YgRnV6emluZywgd2l0aCB0aGUgZ29hbCB0byB0cmlnZ2VyIHZhbGlkYXRpb24vZXJyb3IgcmVzcG9uc2VzLCB3aGljaCBjYW4gYmUgY29udHJhY3QgdGVzdGVkLgpUaGUgYXV0b21hdGljIGZ1enppbmcgaXMgYmFzZWQgb24gdGhlIE9wZW5BUEkgcmVxdWVzdCBwcm9wZXJ0aWVzLCB3aGVyZSBmb3IgZWFjaCBmdXp6aW5nIHZhcmlhdGlvbiBhIG5ldyBQb3N0bWFuIHJlcXVlc3Qgd2lsbCBiZSBnZW5lcmF0ZWQsIHdpdGggb3B0aW9uYWwgY29udHJhY3QgdGVzdHMuCgpUaGUgRnV6emluZyBvcHRpb25zIGRlc2NyaWJlIHRoZSBjb25maWd1cmF0aW9uIHNldHRpbmcgZm9yIGF2YWlsYWJsZSBPcGVuQVBJIGZ1enppbmcgdmFyaWF0aW9ucy4KClJFTUFSS1M6CgotIFtQb3N0bWFuIER5bmFtaWMgdmFyaWFibGVzXShodHRwczovL2xlYXJuaW5nLlBvc3RtYW4uY29tL2RvY3Mvd3JpdGluZy1zY3JpcHRzL3NjcmlwdC1yZWZlcmVuY2VzL3ZhcmlhYmxlcy1saXN0LykgYXJlIHJlbmRlcmVkIGJlZm9yZSBiZWluZyBmdXp6ZWQuCi0gUmVndWxhciBQb3N0bWFuIHZhcmlhYmxlcyBhcmUgc2tpcHBlZCBmcm9tIGZ1enppbmcuCgojIyMjIGZ1enppbmcgb3B0aW9ucwoKLSAqKnJlcXVlc3RCb2R5IChBcnJheSkqKiA6CgogIEFuIGFycmF5IG9mIGZ1enppbmcgb3B0aW9ucyBmb3IgdGhlIFBvc3RtYW4gUmVxdWVzdCBCb2R5LgoKICBSRU1BUks6IEZ1enppbmcgaXMgb25seSBhcHBsaWNhYmxlIGZvciBPcGVuQVBJIHJlcXVlc3QgYm9kaWVzIG9mIG1lZGlhIHR5cGU6ICJhcHBsaWNhdGlvbi9qc29uIgoKICAtICoqcmVxdWlyZWRGaWVsZHMgKEJvb2xlYW4pKiogOiBSZW1vdmVzIHRoZSBwcm9wZXJ0aWVzICYgdmFsdWVzIGZyb20gdGhlIHJlcXVlc3QgYm9keSB0aGF0IGFyZSBtYXJrZWQgYXMgInJlcXVpcmVkIiBpbiBPcGVuQVBJLgogIC0gKiptaW5pbXVtTnVtYmVyRmllbGRzIChCb29sZWFuKSoqIDogQ2hhbmdlcyB0aGUgdmFsdWVzIG9mIHRoZSBudW1lcmljIGZpZWxkcyB0byBhIGxvd2VyIHZhbHVlIHRoYW4gdGhlIGRlZmluZWQgIm1pbmltdW0iIHByb3BlcnR5IGluIHRoZSBPcGVuQVBJIGRvY3VtZW50LgogIC0gKiptYXhpbXVtTnVtYmVyRmllbGRzIChCb29sZWFuKSoqIDogQ2hhbmdlcyB0aGUgdmFsdWUgb2YgdGhlIG51bWVyaWMgZmllbGRzIHRvIGEgaGlnaGVyIHZhbHVlIHRoYW4gdGhlIGRlZmluZWQgIm1heGltdW0iIHByb3BlcnR5IGluIHRoZSBPcGVuQVBJIGRvY3VtZW50LgogIC0gKiptaW5MZW5ndGhGaWVsZHMgKEJvb2xlYW4pKiogOiBDaGFuZ2VzIHRoZSBsZW5ndGggb2YgdGhlIHZhbHVlIHRvIGEgbG93ZXIgbGVuZ3RoIHRoYW4gdGhlIGRlZmluZWQgIm1pbkxlbmd0aCIgcHJvcGVydHkgaW4gdGhlIE9wZW5BUEkgZG9jdW1lbnQuCiAgLSAqKm1heExlbmd0aEZpZWxkcyAoQm9vbGVhbikqKiA6IENoYW5nZXMgdGhlIGxlbmd0aCBvZiB0aGUgdmFsdWUgdG8gYSBoaWdoZXIgbGVuZ3RoIHRoYW4gdGhlIGRlZmluZWQgIm1heExlbmd0aCIgcHJvcGVydHkgaW4gdGhlIE9wZW5BUEkgZG9jdW1lbnQuCgotICoqcmVxdWVzdFF1ZXJ5UGFyYW1zIChBcnJheSkqKiA6CgogIEFuIGFycmF5IG9mIGZ1enppbmcgb3B0aW9ucyBmb3IgdGhlIFBvc3RtYW4gUmVxdWVzdCBRdWVyeSBwYXJhbWV0ZXJzLgoKICAtICoqcmVxdWlyZWRGaWVsZHMgKEJvb2xlYW4pKiogOiBSZW1vdmVzIHRoZSBwcm9wZXJ0aWVzICYgdmFsdWVzIGZyb20gdGhlIHJlcXVlc3QgcXVlcnkgcGFyYW1zIHRoYXQgYXJlIG1hcmtlZCBhcyAicmVxdWlyZWQiIGluIE9wZW5BUEkuCiAgLSAqKm1pbmltdW1OdW1iZXJGaWVsZHMgKEJvb2xlYW4pKiogOiBDaGFuZ2VzIHRoZSB2YWx1ZXMgb2YgdGhlIG51bWVyaWMgZmllbGRzIHRvIGEgbG93ZXIgdmFsdWUgdGhhbiB0aGUgZGVmaW5lZCAibWluaW11bSIgcHJvcGVydHkgaW4gdGhlIE9wZW5BUEkgZG9jdW1lbnQuCiAgLSAqKm1heGltdW1OdW1iZXJGaWVsZHMgKEJvb2xlYW4pKiogOiBDaGFuZ2VzIHRoZSB2YWx1ZSBvZiB0aGUgbnVtZXJpYyBmaWVsZHMgdG8gYSBoaWdoZXIgdmFsdWUgdGhhbiB0aGUgZGVmaW5lZCAibWF4aW11bSIgcHJvcGVydHkgaW4gdGhlIE9wZW5BUEkgZG9jdW1lbnQuCiAgLSAqKm1pbkxlbmd0aEZpZWxkcyAoQm9vbGVhbikqKiA6IENoYW5nZXMgdGhlIGxlbmd0aCBvZiB0aGUgdmFsdWUgdG8gYSBsb3dlciBsZW5ndGggdGhhbiB0aGUgZGVmaW5lZCAibWluTGVuZ3RoIiBwcm9wZXJ0eSBpbiB0aGUgT3BlbkFQSSBkb2N1bWVudC4KICAtICoqbWF4TGVuZ3RoRmllbGRzIChCb29sZWFuKSoqIDogQ2hhbmdlcyB0aGUgbGVuZ3RoIG9mIHRoZSB2YWx1ZSB0byBhIGhpZ2hlciBsZW5ndGggdGhhbiB0aGUgZGVmaW5lZCAibWF4TGVuZ3RoIiBwcm9wZXJ0eSBpbiB0aGUgT3BlbkFQSSBkb2N1bWVudC4KCi0gKipyZXF1ZXN0SGVhZGVycyAoQXJyYXkpKiogOgoKICBBbiBhcnJheSBvZiBmdXp6aW5nIG9wdGlvbnMgZm9yIHRoZSBQb3N0bWFuIFJlcXVlc3QgSGVhZGVycy4KCiAgLSAqKnJlcXVpcmVkRmllbGRzIChCb29sZWFuKSoqIDogUmVtb3ZlcyB0aGUgcHJvcGVydGllcyAmIHZhbHVlcyBmcm9tIHRoZSByZXF1ZXN0IGhlYWRlcnMgdGhhdCBhcmUgbWFya2VkIGFzICJyZXF1aXJlZCIgaW4gT3BlbkFQSS4KICAtICoqbWluaW11bU51bWJlckZpZWxkcyAoQm9vbGVhbikqKiA6IENoYW5nZXMgdGhlIHZhbHVlcyBvZiB0aGUgbnVtZXJpYyBmaWVsZHMgdG8gYSBsb3dlciB2YWx1ZSB0aGFuIHRoZSBkZWZpbmVkICJtaW5pbXVtIiBwcm9wZXJ0eSBpbiB0aGUgT3BlbkFQSSBkb2N1bWVudC4KICAtICoqbWF4aW11bU51bWJlckZpZWxkcyAoQm9vbGVhbikqKiA6IENoYW5nZXMgdGhlIHZhbHVlIG9mIHRoZSBudW1lcmljIGZpZWxkcyB0byBhIGhpZ2hlciB2YWx1ZSB0aGFuIHRoZSBkZWZpbmVkICJtYXhpbXVtIiBwcm9wZXJ0eSBpbiB0aGUgT3BlbkFQSSBkb2N1bWVudC4KICAtICoqbWluTGVuZ3RoRmllbGRzIChCb29sZWFuKSoqIDogQ2hhbmdlcyB0aGUgbGVuZ3RoIG9mIHRoZSB2YWx1ZSB0byBhIGxvd2VyIGxlbmd0aCB0aGFuIHRoZSBkZWZpbmVkICJtaW5MZW5ndGgiIHByb3BlcnR5IGluIHRoZSBPcGVuQVBJIGRvY3VtZW50LgogIC0gKiptYXhMZW5ndGhGaWVsZHMgKEJvb2xlYW4pKiogOiBDaGFuZ2VzIHRoZSBsZW5ndGggb2YgdGhlIHZhbHVlIHRvIGEgaGlnaGVyIGxlbmd0aCB0aGFuIHRoZSBkZWZpbmVkICJtYXhMZW5ndGgiIHByb3BlcnR5IGluIHRoZSBPcGVuQVBJIGRvY3VtZW50LgoKRm9yIG1vcmUgZGV0YWlscywgcmV2aWV3IHRoZSBbZnV6emluZyBleGFtcGxlXShodHRwczovL2dpdGh1Yi5jb20vYXBpZGVjay1saWJyYXJpZXMvcG9ydG1hbi90cmVlL21haW4vZXhhbXBsZXMvdGVzdHN1aXRlLWZ1enppbmctdGVzdHMpLgoKPGhyPgoKIyMjIFBvcnRtYW4gLSBgb3BlcmF0aW9uUHJlUmVxdWVzdFNjcmlwdHNgIHByb3BlcnRpZXMKClRoZSBgb3BlcmF0aW9uUHJlUmVxdWVzdFNjcmlwdHNgIGNvbmZpZ3VyYXRpb24gd2lsbCBpbmplY3QgcHJlLXJlcXVlc3Qgc2NyaXB0cyBpbiB0aGUgUG9zdG1hbiBjb2xsZWN0aW9uLCBvbiByZXF1ZXN0IGxldmVsLgpQb3N0bWFuIGV4ZWN1dGVzIHByZS1yZXF1ZXN0IHNjcmlwdHMgYmVmb3JlIGEgcmVxdWVzdCBydW5zLiBJZiB5b3Ugd2FudCB0byBzZXQgdGhlIFBvc3RtYW4gQ29sbGVjdGlvbiBwcmUtcmVxdWVzdCBzY3JpcHRzIG9uIHRoZSBjb2xsZWN0aW9uIGxldmVsLCB5b3UgY2FuIHVzZSB0aGUgYGdsb2JhbHNgID4gYGNvbGxlY3Rpb25QcmVSZXF1ZXN0U2NyaXB0c2AgY29uZmlndXJhdGlvbi4KVGhlIGBvcGVyYXRpb25QcmVSZXF1ZXN0U2NyaXB0c2AgaXMgaW5zZXJ0ZWQgb24gdGhlIHJlcXVlc3QgbGV2ZWwuCgojIyMjIG9wZXJhdGlvblByZVJlcXVlc3RTY3JpcHRzIG9wdGlvbnMKCi0gKipvcGVuQXBpT3BlcmF0aW9uSWQgKFN0cmluZykqKiA6IFJlZmVyZW5jZSB0byB0aGUgT3BlbkFQSSBvcGVyYXRpb25JZCBvbiB3aGljaCB0aGUgIlByZS1yZXF1ZXN0IFNjcmlwdHMiIHdpbGwgYmUgaW5zZXJ0ZWQuIChleGFtcGxlOiBgbGVhZHNBbGxgKQotICoqb3BlbkFwaU9wZXJhdGlvbklkcyAoQXJyYXkpKiogOiBSZWZlcmVuY2VzIHRvIGFuIGFycmF5IG9mIE9wZW5BUEkgb3BlcmF0aW9uSWRzLCBmb3Igd2hpY2ggdGhlICJQcmUtcmVxdWVzdCBTY3JpcHRzIiB3aWxsIGJlIGluc2VydGVkIChleGFtcGxlOiBgWydsZWFkc0FsbCcsICdjb21wYW5pZXNBbGwnLCAnY29udGFjdHNBbGwnXWAKLSAqKm9wZW5BcGlPcGVyYXRpb24gKFN0cmluZykqKiA6IFJlZmVyZW5jZSB0byBjb21iaW5hdGlvbiBvZiB0aGUgT3BlbkFQSSBtZXRob2QgJiBwYXRoLCBmb3Igd2hpY2ggdGhlICJQcmUtcmVxdWVzdCBTY3JpcHRzIiB3aWxsIGJlIGluc2VydGVkIChleGFtcGxlOiBgR0VUOjovY3JtL2xlYWRzYCkKLSAqKmV4Y2x1ZGVGb3JPcGVyYXRpb25zIChBcnJheSB8IG9wdGlvbmFsKSoqIDogUmVmZXJlbmNlcyB0byBPcGVuQVBJIG9wZXJhdGlvbnMgdGhhdCB3aWxsIGJlIHNraXBwZWQgZm9yIHRhcmdldGluZy4gKGV4YW1wbGU6IGBbImxlYWRzQWRkIiwgIkdFVDo6L2NybS9sZWFkcy97aWR9Il1gKQoKLSAqKnNjcmlwdHMgKEFycmF5KSoqIDogQXJyYXkgb2Ygc2NyaXB0cyB0aGF0IHdpbGwgYmUgaW5qZWN0ZWQgYXMgUG9zdG1hbiBQcmUtcmVxdWVzdCBTY3JpcHRzIG9uIHJlcXVlc3QgbGV2ZWwsIHRoYXQgd2lsbCBiZSBleGVjdXRlZCBiZWZvcmUgdGhlIHRhcmdldGVkIHJlcXVlc3RzIGluIHRoaXMgY29sbGVjdGlvbi4gVmFsdWVzIGNhbiBiZSB0aGUgc2NyaXB0IGNvbnRlbnQgb3IgcGF0aCB0byB0aGUgc2NyaXB0IGZpbGUgKHdpdGggYGZpbGU6YCBwcmVmaXgpLgoKPGhyPgoKIyMjIFBvcnRtYW4gLSBgZ2xvYmFsc2AgcHJvcGVydHkKClRoZSBjb25maWd1cmF0aW9uIGRlZmluZWQgaW4gdGhlIGBnbG9iYWxzYCB3aWxsIGJlIGV4ZWN1dGVkIG9uIHRoZSBmdWxsIFBvc3RtYW4gY29sbGVjdGlvbi4gVGhpcyBpcyBoYW5keSBpZiB5b3UgbmVlZCB0byBkbyBtYXNzIHJlcGxhY2VtZW50cyBvZiB2YXJpYWJsZXMgb3Igc3BlY2lmaWMgd29yZHMva2V5cy92YWx1ZXMgaW4gdGhlIGZ1bGwgY29sbGVjdGlvbiB0aGF0IGNhbm5vdCBiZSBvdmVyd3JpdHRlbiBwZXIgcmVxdWVzdC4KCiMjIyMgZ2xvYmFscyBvcHRpb25zCgotICoqc3RyaXBSZXNwb25zZUV4YW1wbGVzIChEZWZhdWx0OiBmYWxzZSkqKiA6IFN0cmlwIHRoZSByZXNwb25zZSBleGFtcGxlcyBmcm9tIHRoZSBnZW5lcmF0ZWQgUG9zdG1hbiBjb2xsZWN0aW9uLgotICoqdmFyaWFibGVDYXNpbmcqKiA6IENoYW5nZSB0aGUgY2FzaW5nIG9mIHRoZSBhdXRvLWdlbmVyYXRlZCBQb3N0bWFuIHZhcmlhYmxlcy4gU3VwcG9ydGVkIHZhbHVlcyBhcmU6IGBjYW1lbENhc2VgLCBgcGFzY2FsQ2FzZWAsIGBrZWJhYkNhc2VgLCBgdHJhaW5DYXNlYCwgYHNuYWtlQ2FzZWAsIGBhZGFDYXNlYCwgYGNvbnN0YW50Q2FzZWAsIGBjb2JvbENhc2VgLCBgZG90Tm90YXRpb25gLiBTZWUgdGhlIFtBc3NpZ24gJiBPdmVyd3JpdGUgZXhhbXBsZV0oaHR0cHM6Ly9naXRodWIuY29tL2FwaWRlY2stbGlicmFyaWVzL3BvcnRtYW4vdHJlZS9tYWluL2V4YW1wbGVzL3Rlc3RzdWl0ZS1hc3NpZ24tb3ZlcndyaXRlI2dsb2JhbHMpIGZvciB0aGUgZGlmZmVyZW50IGNhc2luZyBvcHRpb25zLgotICoqc2VwYXJhdG9yU3ltYm9sIChEZWZhdWx0OiAiOjoiKSoqIDogQ2hhbmdlIHRoZSBzZXBhcmF0b3Igc3ltYm9sIGZvciB0aGUgYXV0by1nZW5lcmF0ZWQgUG9zdG1hbiB0ZXN0TmFtZSBkZXNjcmlwdGlvbiAoRXhhbXBsZTogYFtHRVRdOjovY3JtL2xlYWRzIC0gU3RhdHVzIGNvZGUgaXMgMnh4YCkuIEhlbHBmdWwgd2hlbiB1c2luZyB0aGUgW3Bvc3RtYW4tdG8tazZdKGh0dHBzOi8vZ2l0aHViLmNvbS9hcGlkZWNrLWxpYnJhcmllcy9wb3N0bWFuLXRvLWs2KSBjb252ZXJ0ZXIuCi0gKipjb2xsZWN0aW9uUHJlUmVxdWVzdFNjcmlwdHMqKiA6IEFycmF5IG9mIHNjcmlwdHMgdGhhdCB3aWxsIGJlIGluamVjdGVkIGFzIFBvc3RtYW4gQ29sbGVjdGlvbiBQcmUtcmVxdWVzdCBTY3JpcHRzIHRoYXQgd2lsbCBiZSBleGVjdXRlZCBieSBQb3N0bWFuIGJlZm9yZSBldmVyeSByZXF1ZXN0IGluIHRoaXMgY29sbGVjdGlvbi4gVmFsdWVzIGNhbiBiZSB0aGUgc2NyaXB0IGNvbnRlbnQgb3IgcGF0aCB0byB0aGUgc2NyaXB0IGZpbGUgKHdpdGggYGZpbGU6YCBwcmVmaXgpLgotICoqY29sbGVjdGlvblRlc3RTY3JpcHRzKio6IEFycmF5IG9mIHNjcmlwdHMgdGhhdCB3aWxsIGJlIGluamVjdGVkIGFzIFBvc3RtYW4gQ29sbGVjdGlvbiBUZXN0IFNjcmlwdHMgd2lsbCBiZSBleGVjdXRlZCBieSBQb3N0bWFuIGFmdGVyIGV2ZXJ5IHJlcXVlc3QgaW4gdGhpcyBjb2xsZWN0aW9uLiBWYWx1ZXMgY2FuIGJlIHRoZSBzY3JpcHQgY29udGVudCBvciBwYXRoIHRvIHRoZSBzY3JpcHQgZmlsZSAod2l0aCBgZmlsZTpgIHByZWZpeCkuCi0gKipjb2xsZWN0aW9uVmFyaWFibGVzKio6IEEgbWFwIG9mIGtleSB2YWx1ZSBwYWlycyB0aGF0IHdpbGwgaW5zZXJ0ZWQgYXMgUG9zdG1hbiBjb2xsZWN0aW9uIHZhcmlhYmxlcy4KLSAqKmtleVZhbHVlUmVwbGFjZW1lbnRzKiogOiBBIG1hcCBvZiBwYXJhbWV0ZXIga2V5IG5hbWVzIHRoYXQgd2lsbCBoYXZlIHRoZWlyIHZhbHVlcyByZXBsYWNlZCB3aXRoIHRoZSBwcm92aWRlZCBQb3N0bWFuIHZhcmlhYmxlcy4KLSAqKnZhbHVlUmVwbGFjZW1lbnRzKiogOiBBIG1hcCBvZiB2YWx1ZXMgdGhhdCB3aWxsIGhhdmUgdGhlaXIgdmFsdWVzIHJlcGxhY2VkIHdpdGggdGhlIHByb3ZpZGVkIHZhbHVlcy4KLSAqKnJhd1JlcGxhY2VtZW50cyoqIDogQ29uc2lkZXIgdGhpcyBhICJzZWFyY2ggJiByZXBsYWNlIiB1dGlsaXR5LCB0aGF0IHdpbGwgc2VhcmNoIGEgc3RyaW5nL29iamVjdC8uLi4gYW5kIHJlcGxhY2UgaXQgd2l0aCBhbm90aGVyIHN0cmluZy9vYmplY3QvLi4uCiAgVGhpcyBpcyB2ZXJ5IHVzZWZ1bCB0byByZXBsYWNlIGRhdGEgZnJvbSB0aGUgT3BlbkFQSSBzcGVjaWZpY2F0aW9uLCBiZWZvcmUgaXQgaXMgdXNlZCBpbiB0aGUgUG9ydG1hbiB0ZXN0IGF1dG9tYXRpb24gZ2VuZXJhdGlvbi4KLSAqKnBvcnRtYW5SZXBsYWNlbWVudHMqKiA6IFRoZSAic2VhcmNoICYgcmVwbGFjZSIgdXRpbGl0eSByaWdodCBiZWZvcmUgdGhlIGZpbmFsIFBvc3RtYW4gZmlsZSBpcyB3cml0dGVuLCB0aGF0IHdpbGwgc2VhcmNoIGEgc3RyaW5nL29iamVjdC8uLi4gYW5kIHJlcGxhY2UgaXQgd2l0aCBhbm90aGVyIHN0cmluZy9vYmplY3QvLi4uCiAgVGhpcyBpcyBwcmFjdGljYWwgdG8gcmVwbGFjZSBhbnkgZGF0YSBmcm9tIHRoZSBnZW5lcmF0ZWQgUG9ydG1hbiBjb2xsZWN0aW9uLCBiZWZvcmUgaXQgaXMgdXNlZCBpbiBQb3N0bWFuIC8gTmV3bWFuIHRlc3QgZXhlY3V0aW9uLgotICoqb3JkZXJPZk9wZXJhdGlvbnMqKiA6IFRoZSBgb3JkZXJPZk9wZXJhdGlvbnNgIGlzIGEgbGlzdCBvZiBPcGVuQVBJIG9wZXJhdGlvbnMsIHdoaWNoIGlzIHVzZWQgYnkgUG9ydG1hbiB0byBzb3J0IHRoZSBQb3N0bWFuIHJlcXVlc3RzIGluIHRoZSBkZXNpcmVkIG9yZGVyLCBpbiB0aGVpciBmb2xkZXIuIFRoZSBvcmRlcmluZyBmcm9tIGBvcmRlck9mT3BlcmF0aW9uc2AgaXMgcGVyZm9ybWVkIHBlciBmb2xkZXIuIEl0ZW1zIHRoYXQgYXJlICoqbm90KiogZGVmaW5lZCBpbiB0aGUgYG9yZGVyT2ZPcGVyYXRpb25zYCBsaXN0IHdpbGwgcmVtYWluIGF0IHRoZWlyIGN1cnJlbnQgb3JkZXIuCi0gKipvcmRlck9mRm9sZGVycyoqIDogVGhlIGBvcmRlck9mRm9sZGVyc2AgaXMgYSBsaXN0IG9mIFBvc3RtYW4gZm9sZGVyIG5hbWVzLCB3aGljaCBpcyB1c2VkIGJ5IFBvcnRtYW4gdG8gc29ydCB0aGUgUG9zdG1hbiBmb2xkZXJzIGluIHRoZSBkZXNpcmVkIG9yZGVyLiBGb2xkZXJzIHRoYXQgYXJlICoqbm90KiogZGVmaW5lZCBpbiB0aGUgYG9yZGVyT2ZGb2xkZXJzYCBsaXN0IHdpbGwgcmVtYWluIGF0IHRoZWlyIGN1cnJlbnQgb3JkZXIsIGFmdGVyIHRoZSByZS1vcmRlciBmb2xkZXJzLgotICoqc2VjdXJpdHlPdmVyd3JpdGVzKiogOiBPdmVyd3JpdGUgb2YgdGhlIE9wZW5BUEkgU2VjdXJpdHkgU2NoZW1lIE9iamVjdCAoc3VwcG9ydGVkIHR5cGVzOiAiYXBpS2V5IiwgImh0dHAgYmFzaWMgYXV0aCIsICJodHRwIGJlYXJlciB0b2tlbiIpIG9yIGluamVjdCBhIFBvc3RtYW4gYXV0aG9yaXphdGlvbiBvcHRpb24gKHN1cHBvcnRlZCB0eXBlczogYXdzdjQsIGRpZ2VzdCwgZWRnZWdyaWQsIG50bG0sIG9hdXRoMSwgb2F1dGgyKSBvbiBhIGNvbGxlY3Rpb24gbGV2ZWwuIAoKICBUaGUgc2VjdXJpdHkgb3ZlcndyaXRlcyBwcm92aWRlcyBhIG51bWJlciBvZiBzZWN1cml0eSB0eXBlczoKCiAgLSAqKnJlbW92ZSAoQm9vbGVhbiB0cnVlL2ZhbHNlIHwgRGVmYXVsdDogZmFsc2UpKiogOiBVbnNldHMgdGhlIEF1dGhvcml6YXRpb24gdHlwZSBpbiBQb3N0bWFuLgogIAogIC0gKiphcGlLZXkqKjogVGhlIEFQSSBrZXkgYXV0aCB3aWxsIHNlbmQgYSBrZXktdmFsdWUgcGFpciB0byB0aGUgQVBJIGVpdGhlciBpbiB0aGUgcmVxdWVzdCBoZWFkZXJzIG9yIHF1ZXJ5IHBhcmFtZXRlcnMuCiAgICAtICoqdmFsdWUgKFN0cmluZykqKiA6IFRoZSB2YWx1ZSB0aGF0IHdpbGwgYmUgaW5zZXJ0ZWQgYXMgdGhlIFBvc3RtYW4gYXBpS2V5IHZhbHVlLiBJdCBjYW4gYmUgYSBwbGFpbiB2YWx1ZSBvciBhIFBvc3RtYW4gdmFyaWFibGUuCiAgICAtICoqa2V5IChTdHJpbmcgfCBvcHRpb25hbCkqKiA6IFRoZSAia2V5IiB2YWx1ZSB0aGF0IHdpbGwgYmUgaW5zZXJ0ZWQgaW4gdGhlIFBvc3RtYW4gYXBpS2V5IGtleSBmaWVsZC4gSXQgY2FuIGJlIGEgcGxhaW4gdmFsdWUgb3IgYSBQb3N0bWFuIHZhcmlhYmxlLgogICAgLSAqKmluIChTdHJpbmcgfCBvcHRpb25hbCkqKiA6IFRoZSAiaW4iIHZhbHVlIHRoYXQgZGVmaW5lcyB3aGVyZSB0aGUgQXBpIEtleSB3aWxsIGJlIGFkZGVkIGluIHRoZSBQb3N0bWFuIHJlcXVlc3QgSGVhZGVyIG9yIFF1ZXJ5IHBhcmFtcy4gUG9zdG1hbiBzdXBwb3J0cyBgaGVhZGVyYCBmb3IgIkhlYWRlciIgb3IgYHF1ZXJ5YCBmb3IgIlF1ZXJ5IFBhcmFtcyIuCiAgCiAgYGBganNvbgogICJzZWN1cml0eU92ZXJ3cml0ZXMiOiB7CiAgICAgICAgImFwaUtleSI6IHsKICAgICAgICAgICJ2YWx1ZSI6ICJ7e2FwaUtleX19IgogICAgICAgIH0KICAgICAgfQogIGBgYAogIAogIC0gKipiZWFyZXIqKjogVGhlIGJlYXJlciB0b2tlbnMgYWxsb3cgcmVxdWVzdHMgdG8gYXV0aGVudGljYXRlIHVzaW5nIGFuIGFjY2VzcyBrZXksIHN1Y2ggYXMgYSBKU09OIFdlYiBUb2tlbiAoSldUKS4KICAgIC0gKip0b2tlbiAoU3RyaW5nKSoqIDogVGhlICJ0b2tlbiIgdGhhdCB3aWxsIGJlIGluc2VydGVkIGFzIHRoZSBQb3N0bWFuIGJlYXJlciB0b2tlbiB2YWx1ZS4gSXQgY2FuIGJlIGEgcGxhaW4gdmFsdWUgb3IgYSBQb3N0bWFuIHZhcmlhYmxlLgogIAogIGBgYGpzb24KICAic2VjdXJpdHlPdmVyd3JpdGVzIjogewogICAgICAgICJiZWFyZXIiOiB7CiAgICAgICAgICAidG9rZW4iOiAie3tiZWFyZXJUb2tlbn19IgogICAgICAgIH0KICAgICAgfQogIGBgYAogIAogIC0gKipiYXNpYyoqOiBCYXNpYyBhdXRoZW50aWNhdGlvbiBpbnZvbHZlcyBzZW5kaW5nIGEgdmVyaWZpZWQgdXNlcm5hbWUgYW5kIHBhc3N3b3JkIHdpdGggeW91ciByZXF1ZXN0LgogICAgLSAqKnVzZXJuYW1lIChTdHJpbmcpKiogOiBUaGUgdXNlcm5hbWUgdGhhdCB3aWxsIGJlIGluc2VydGVkIGFzIHRoZSBiYXNpYyBhdXRoZW50aWNhdGlvbiB1c2VybmFtZSB2YWx1ZQogICAgLSAqKnBhc3N3b3JkIChTdHJpbmcpKiogOiBUaGUgcGFzc3dvcmQgdGhhdCB3aWxsIGJlIGluc2VydGVkIGFzIHRoZSBiYXNpYyBhdXRoZW50aWNhdGlvbiBwYXNzd29yZCB2YWx1ZQogIAogIGBgYGpzb24KICAic2VjdXJpdHlPdmVyd3JpdGVzIjogewogICAgICAgICJiYXNpYyI6IHsKICAgICAgICAgICJ1c2VybmFtZSI6ICJ7e3VzZXJuYW1lfX0iLAogICAgICAgICAgInBhc3N3b3JkIjogInt7cGFzc3dvcmR9fSIsCiAgICAgICAgfQogICAgICB9CiAgYGBgCiAgCiAgLSAqKlBvc3RtYW4gc2VjdXJpdHkgb3B0aW9ucyoqOiBPdmVyd3JpdGUvSW5zZXJ0IFBvc3RtYW4gYXV0aG9yaXphdGlvbiBzZXR0aW5ncy4KICAgIC0gKipQb3N0bWFuIFR5cGUgKEFycmF5KSoqIDogVGhlIFBvc3RtYW4gYXV0aG9yaXphdGlvbiBvcHRpb24gdHlwZS4gU3VwcG9ydGVkIHR5cGVzIGFyZTogYGF3c3Y0YCwgYGRpZ2VzdGAsIGBlZGdlZ3JpZGAsIGBudGxtYCwgYG9hdXRoMWAsIGBvYXV0aDJgCiAgICAgIC0gKipBdHRyaWJ1dGVzKiogOiBrZXkvdmFsdWUvdHlwZSBhcyBkZWZpbmVkIGluIFBvc3RtYW4gKHRoZSBlYXNpZXN0IHdheSB0byBkZWZpbmUgaXQsIGlzIHRvIHNldCBpdCBtYW51YWxseSBpbiBQb3N0bWFuLCBleHBvcnQgdGhlIGNvbGxlY3Rpb24gYW5kIGV4dHJhY3QgdGhlIG1hdGNoaW5nIHZhbHVlcyBmcm9tIHRoZSBKU09OIGZpbGUpLiAKICAKICBgYGBqc29uCiAgewogICAgImdsb2JhbHMiOiB7CiAgICAgICJzZWN1cml0eU92ZXJ3cml0ZXMiOiB7CiAgICAgICAgIm9hdXRoMSI6IFsKICAgICAgICAgIHsKICAgICAgICAgICAgImtleSI6ICJhZGRFbXB0eVBhcmFtc1RvU2lnbiIsCiAgICAgICAgICAgICJ2YWx1ZSI6IHRydWUsCiAgICAgICAgICAgICJ0eXBlIjogImJvb2xlYW4iCiAgICAgICAgICB9LAogICAgICAgICAgewogICAgICAgICAgICAia2V5IjogInRpbWVzdGFtcCIsCiAgICAgICAgICAgICJ2YWx1ZSI6ICIxNDYxMzE5NzY5IiwKICAgICAgICAgICAgInR5cGUiOiAic3RyaW5nIgogICAgICAgICAgfSwKICAgICAgICAgIHsKICAgICAgICAgICAgImtleSI6ICJub25jZSIsCiAgICAgICAgICAgICJ2YWx1ZSI6ICJpazNvVDUiLAogICAgICAgICAgICAidHlwZSI6ICJzdHJpbmciCiAgICAgICAgICB9LAogICAgICAgICAgewogICAgICAgICAgICAia2V5IjogImNvbnN1bWVyU2VjcmV0IiwKICAgICAgICAgICAgInZhbHVlIjogIkQrRWRRLWdzJC0lQDJOdTciLAogICAgICAgICAgICAidHlwZSI6ICJzdHJpbmciCiAgICAgICAgICB9LAogICAgICAgICAgewogICAgICAgICAgICAia2V5IjogImNvbnN1bWVyS2V5IiwKICAgICAgICAgICAgInZhbHVlIjogIlJLQ0d6bmE3YnY5WUQ1N2MiLAogICAgICAgICAgICAidHlwZSI6ICJzdHJpbmciCiAgICAgICAgICB9LAogICAgICAgICAgewogICAgICAgICAgICAia2V5IjogInNpZ25hdHVyZU1ldGhvZCIsCiAgICAgICAgICAgICJ2YWx1ZSI6ICJITUFDLVNIQTEiLAogICAgICAgICAgICAidHlwZSI6ICJzdHJpbmciCiAgICAgICAgICB9LAogICAgICAgICAgewogICAgICAgICAgICAia2V5IjogInZlcnNpb24iLAogICAgICAgICAgICAidmFsdWUiOiAiMS4wIiwKICAgICAgICAgICAgInR5cGUiOiAic3RyaW5nIgogICAgICAgICAgfSwKICAgICAgICAgIHsKICAgICAgICAgICAgImtleSI6ICJhZGRQYXJhbXNUb0hlYWRlciIsCiAgICAgICAgICAgICJ2YWx1ZSI6IGZhbHNlLAogICAgICAgICAgICAidHlwZSI6ICJib29sZWFuIgogICAgICAgICAgfQogICAgICAgIF0KICAgICAgfQogICAgfQogIH0KICBgYGAKCkZvciBtb3JlIGRldGFpbHMgb24gdGhlIGBnbG9iYWxzYCBjb25maWd1cmF0aW9uIG9wdGlvbnMgLCByZXZpZXcgdGhlIFtnbG9iYWxzIGV4YW1wbGVdKGh0dHBzOi8vZ2l0aHViLmNvbS9hcGlkZWNrLWxpYnJhcmllcy9wb3J0bWFuL3RyZWUvbWFpbi9leGFtcGxlcy9wb3J0bWFuLWdsb2JhbHMpIGFuZCBbb3JkZXJpbmcgZXhhbXBsZV0oaHR0cHM6Ly9naXRodWIuY29tL2FwaWRlY2stbGlicmFyaWVzL3BvcnRtYW4vdHJlZS9tYWluL2V4YW1wbGVzL3Bvc3RtYW4tb3JkZXJpbmcpCgo8aHI+CgojIyBDb25maWd1cmUgYXV0b21hdGljIHVwbG9hZCB0byBQb3N0bWFuIEFwcAoKPiBSRU1BUks6IFBvcnRtYW4gZG9lcyAqKm5vdCoqIHJlcXVpcmUgeW91IHRvIGhhdmUgYSBQb3N0bWFuIGFjY291bnQuCgpJbiBjYXNlIHlvdSB3YW50IHRvIHN5bmMgdGhlIGdlbmVyYXRlZCBQb3N0bWFuIGNvbGxlY3Rpb24gd2l0aCB0aGUgUG9zdG1hbiBhcHAgKGBwb3J0bWFuIC0tc3luY1Bvc3RtYW5gKSwgeW91IHdvdWxkIG5lZWQgYSBQb3N0bWFuIGFjY291bnQgc2luY2UgUG9ydG1hbiBsZXZlcmFnZXMgdGhlIFBvc3RtYW4gQVBJIHRvIHN5bmMgdGhlIGNvbGxlY3Rpb24uCgpUaGlzIGNhbiBiZSBhICJmcmVlIiBQb3N0bWFuIGFjY291bnQgb3IgYW55IG9mIHRoZSBwYWlkIFtQb3N0bWFuIHBsYW5zXShodHRwczovL3d3dy5wb3N0bWFuLmNvbS9wcmljaW5nLykuCgpUaGUgZ2VuZXJhdGVkIFBvc3RtYW4gY29sbGVjdGlvbiBjYW4gYWx3YXlzIGJlIFtpbXBvcnRlZCBtYW51YWxseV0oaHR0cHM6Ly9sZWFybmluZy5wb3N0bWFuLmNvbS9kb2NzL2dldHRpbmctc3RhcnRlZC9pbXBvcnRpbmctYW5kLWV4cG9ydGluZy1kYXRhLyNpbXBvcnRpbmctZGF0YS1pbnRvLXBvc3RtYW4pLCB3aXRob3V0IGEgUG9zdG1hbiBhY2NvdW50LgoKVG8gZW5hYmxlIGF1dG9tYXRpYyB1cGxvYWRzIG9mIHRoZSBnZW5lcmF0ZWQgUG9zdG1hbiBjb2xsZWN0aW9uIHRocm91Z2ggUG9ydG1hbiwgZm9sbG93IHRoZXNlIHN0ZXBzOgoKMS4gR2V0IHlvdXIgUG9zdG1hbiBBUEkga2V5CgohW0RvY3VtZW50YXRpb24gUGlwZWxpbmVdKGh0dHBzOi8vcmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbS9hcGlkZWNrLWxpYnJhcmllcy9wb3J0bWFuL21haW4vZG9jcy9pbWcvcG9zdG1hbi1hdXRvbWF0aW9uLTAucG5nKQoKIVtEb2N1bWVudGF0aW9uIFBpcGVsaW5lXShodHRwczovL3Jhdy5naXRodWJ1c2VyY29udGVudC5jb20vYXBpZGVjay1saWJyYXJpZXMvcG9ydG1hbi9tYWluL2RvY3MvaW1nL3Bvc3RtYW4tYXV0b21hdGlvbi0xLnBuZykKCiFbRG9jdW1lbnRhdGlvbiBQaXBlbGluZV0oaHR0cHM6Ly9yYXcuZ2l0aHVidXNlcmNvbnRlbnQuY29tL2FwaWRlY2stbGlicmFyaWVzL3BvcnRtYW4vbWFpbi9kb2NzL2ltZy9wb3N0bWFuLWF1dG9tYXRpb24tMi5wbmcpCgoyLiBHb3RvIHRoZSByb290IGZvbGRlciBvZiB5b3VyIHByb2plY3QKCjMuIENvcHkgW2Vudi1wb3N0bWFuLWFwcC1leGFtcGxlXSguLy5lbnYtcG9zdG1hbi1hcHAuZXhhbXBsZSkgYXMgYC5lbnZgIGluIHRoZSByb290IGZvbGRlciBvZiB5b3VyIHByb2plY3QKCjQuIEVudGVyIHlvdXIgUG9zdG1hbiBBUEkga2V5IGluIGEgbG9jYWwgYC5lbnZgIGZpbGUsIGFzIGBQT1NUTUFOX0FQSV9LRVk9W3JlcGxhY2Ugd2l0aCBQb3N0bWFuIGFwaSBrZXldYAoKTmV4dCB0byB0aGUgUG9zdG1hbiBBUEkga2V5LCB5b3UgY2FuIGFsc28gcGFzcyBhbG9uZyB0aGUgUG9zdG1hbiBXb3Jrc3BhY2UgbmFtZSAmIHRoZSBzcGVjaWZpYyBQb3N0bWFuIENvbGxlY3Rpb24gVUlELgoKU3VwcG9ydGVkIFBvc3RtYW4gQVBJIC5FTlYgdmFyaWFibGVzOgoKLSAqKlBPU1RNQU5fQVBJX0tFWSoqIDogUG9zdG1hbiBBUEkga2V5Ci0gKipQT1NUTUFOX1dPUktTUEFDRV9OQU1FKiogOiBQb3N0bWFuIFdvcmtzcGFjZSBuYW1lIHRvIHRhcmdldCB0aGUgdXBsb2FkIG9mIHRoZSBnZW5lcmF0ZWQgUG9zdG1hbiBjb2xsZWN0aW9uCi0gKipQT1NUTUFOX0NPTExFQ1RJT05fVUlEKiogOiBQb3N0bWFuIGNvbGxlY3Rpb24gVUlEIHRvIHVwbG9hZCB3aXRoIHRoZSBnZW5lcmF0ZWQgUG9zdG1hbiBjb2xsZWN0aW9uCgpUaGUgYFBPU1RNQU5fV09SS1NQQUNFX05BTUVgICYgYFBPU1RNQU5fQ09MTEVDVElPTl9VSURgIHZhcmlhYmxlcyBjYW4gYWxzbyBiZSBzZXQgYXMgQ0xJIE9wdGlvbnMgYC0tcG9zdG1hbldvcmtzcGFjZU5hbWVgICYgYC0tcG9zdG1hblVpZGAgLCB3aGljaCB3aWxsIG92ZXJydWxlIHRoZSB2YXJpYWJsZXMgZGVmaW5lZCBpbiB0aGUgLkVOViBmaWxlLgoKPiAqKlJFQ09NTUVOREFUSU9OKio6IERvIG5vdCBjb21taXQgdGhlIGAuZW52YCBmaWxlIGluIGFueSB2ZXJzaW9uaW5nIHN5c3RlbSBsaWtlIEdJVCBpZiBpdCBjb250YWlucyBjb25maWRlbnRpYWwgY3JlZGVudGlhbHMuCgojIENyZWRpdHMKClBvcnRtYW4gc3RhcnRlZCBhcyBhIFBSIG9uIHRoZSBoYW5keSBbb3BlbmFwaS10by1wb3N0bWFuXShodHRwczovL2dpdGh1Yi5jb20vcG9zdG1hbmxhYnMvb3BlbmFwaS10by1wb3N0bWFuKSBwYWNrYWdlIHRvIGdlbmVyYXRlIGJhc2ljIFBvc3RtYW4gdGVzdHMgZnJvbSB0aGUgT3BlbkFQSSBzcGVjaWZpY2F0aW9uLgoKW0FwaWRlY2tdKGh0dHBzOi8vd3d3LmFwaWRlY2suY29tLykgaW1tZWRpYXRlbHkgc2F3IHRoZSBQUidzIHZhbHVlIGFuZCBjb2xsYWJvcmF0ZWQgd2l0aCB0aGUgb3JpZ2luYWwgYXV0aG9yLCBbVGltIEhhc2VsYWFyc10oaHR0cHM6Ly9naXRodWIuY29tL3RoaW04MSksIHRvIGFkb3B0IHRoZSBmdW5jdGlvbmFsaXR5IGFuZCBleHRlbmQgdGhlIG9wdGlvbnMgJiB0b29saW5nIHRvIGNyZWF0ZSAiUG9ydG1hbiIuCgpUaGUgZ29hbCBvZiBQb3J0bWFuIGlzIHRvIGRyaXZlIEFQSSBhdXRvbWF0aW9uIGJ5ICdwb3J0aW5nJyBhIHN0YXRpYyBPcGVuQVBJIGRvY3VtZW50IHRvIGEgZHluYW1pYyBQb3N0bWFuIGNvbGxlY3Rpb24gdGhhdCBpbmNsdWRlcyBhIHBvd2VyZnVsIHRlc3Rpbmcgc3VpdGUgd2l0aCB2YXJpYWJsZSByZXF1ZXN0cywgYm9kaWVzIGFuZCBtb3JlLiBBbGwgdGhpcyB3aGlsZSBiZWluZyBlYXN5IHRvIGNvbmZpZ3VyZSAmIHJlYWR5IHRvIHVzZS4KClBvcnRtYW4gaXMgYSB2YWx1YWJsZSB0b29sIGluIGFueSBPcGVuQVBJIHdvcmtmbG93LCBmb3IgbG9jYWwgZGV2ZWxvcG1lbnQgb3IgYXMgcGFydCBvZiBhIENJL0NEIGF1dG9tYXRpb24gcGlwZWxpbmUuCgpDcmVkaXRzIGZvciB0aGlzIHBhY2thZ2UgZm9yIHRoZSBoYXJkIHdvcmsgb2YgW05pY2sgTGxveWRdKGh0dHBzOi8vZ2l0aHViLmNvbS9uaWNrbGxveWQpIGFuZCBbVGltIEhhc2VsYWFyc10oaHR0cHM6Ly9naXRodWIuY29tL3RoaW04MSkuCgojIEZ1dHVyZSBpZGVhcwoKLSBbIF0gTWFrZSBQb3N0bWFuIHNlY3VyaXR5IGR5bmFtaWMKCiMgUmVzb3VyY2VzCgpBIGNvbGxlY3Rpb24gb2YgYmxvZyBwb3N0cyBhbmQgcmVzb3VyY2VzIGFib3V0IFBvcnRtYW4KCi0gaHR0cHM6Ly93d3cuYW5kbW9yZS5kZXYvYmxvZy9nZXR0aW5nLXN0YXJ0ZWQtcG9ydG1hbi8gYnkgW2FuZG1vcmVkZXZdKGh0dHBzOi8vZ2l0aHViLmNvbS9hbmRtb3JlZGV2KQotIGh0dHBzOi8vaXRuZXh0LmlvL2F1dG9tYXRpbmctYXBpLXRlc3Rpbmctd2l0aC1wb3J0bWFuLXBvc3RtYW4tYW5kLW5ld21hbi1lYzFhODY5Y2JjOTkgYnkgVHlsZXIgT3dlbgotIGh0dHBzOi8vd3d3LmNvZGVjZW50cmljLmRlL3dpc3NlbnMtaHViL2Jsb2cvY2hhcmdlLXlvdXItYXBpcy12b2x1bWUtMy1vcHRpbWl6aW5nLWFwaS10ZXN0aW5nLXdpdGgtY29udHJhY3QtdGVzdGluZyBieSBbRGFuaWVsIEtvY290XShodHRwczovL2dpdGh1Yi5jb20vZGFuaWVsa29jb3QpCi0gaHR0cHM6Ly9ibG9nLmFwaWRlY2suY29tL3BvcnRtYW4tYXBpLXRlc3RpbmcgYnkgW0NocmlzIFdvb2RdKGh0dHBzOi8vd3d3LmxpbmtlZGluLmNvbS9pbi9zZW5zaWJsZXdvb2QvKQotIGh0dHBzOi8vZGV2LnRvL29uZWFkdmFuY2VkL2FwaS1wcm92aWRlci1jb250cmFjdC10ZXN0aW5nLWZvci1hbGwtd2l0aC1wb3J0bWFuLW9wZW5hcGktYW5kLXBvc3RtYW4tNGxsMSBieSBbQWxleCBTYXZhZ2VdKGh0dHBzOi8vZ2l0aHViLmNvbS9zYXZhZ2UtYWxleCkKLSBodHRwczovL2dpdGh1Yi5jb20vdGhpbTgxL3NwZWMtZHJpdmVuLW9wZW5hcGktY29udHJhY3QtcGVyZm9ybWFuY2UtdGVzdGluZyBieSBbVGltIEhhc2VsYWFyc10oaHR0cHM6Ly9naXRodWIuY29tL3RoaW04MSkKLSBodHRwczovL3d3dy5jb2RlY2VudHJpYy5kZS93aXNzZW5zLWh1Yi9ibG9nL2NoYXJnZS15b3VyLWFwaXMtdm9sdW1lLTI1LWNvbnRyYWN0LXRlc3RpbmcgYnkgUGFzcXVhbGUgQnJ1bmVsbGkKLSBodHRwczovL3Fhc2UuaW8vYmxvZy9hdXRvbWF0ZWQtY29udHJhY3QtdGVzdGluZy9hbXAvIENvbnRyYWN0IFRlc3RpbmcgaW4gQWN0aW9uIGJ5IEtpcmlsbCBJdmxpZXYK
+ readmeEtag: '"110a3b4a82f73303073d59bb138e829fa9055262"'
+ readmeLastModified: Thu, 22 Aug 2024 08:45:07 GMT
repositoryId: 364542854
description: >-
Port OpenAPI Specs to Postman Collections, inject test suite and run via
Newman 👨🏽🚀
created: '2021-05-05T10:42:29Z'
- updated: '2024-08-19T17:22:59Z'
+ updated: '2024-08-22T08:45:11Z'
language: TypeScript
archived: false
stars: 630
@@ -2478,8 +2478,8 @@
owner: apideck-libraries
logo: https://avatars.githubusercontent.com/u/73573473?v=4
license: Apache-2.0
- repoEtag: '"246ed7a09f72438095a2f22259e85a1a1141f7d89484b98c5cb2d240ecb291f7"'
- repoLastModified: Mon, 19 Aug 2024 17:22:59 GMT
+ repoEtag: '"71bdc3c6cef1e6b5bb261217795ec97fc15958236bc2d4ada25a565d5150510e"'
+ repoLastModified: Thu, 22 Aug 2024 08:45:11 GMT
foundInMaster: true
id: a03cdb329f630a946a946dfe26802c43
- source: https://openapi.tools/
@@ -2507,17 +2507,17 @@
repositoryId: 537500924
description: Automated API Testing and Quality Assurance
created: '2022-09-16T14:48:21Z'
- updated: '2024-08-18T02:24:45Z'
+ updated: '2024-08-22T18:05:29Z'
language: TypeScript
archived: false
- stars: 1606
+ stars: 1607
watchers: 13
forks: 71
owner: stepci
logo: https://avatars.githubusercontent.com/u/61350067?v=4
license: MPL-2.0
- repoEtag: '"1637ebee04d971a37c6ffd078ee0a869a5b464db0bd343b056946cbb4ec97865"'
- repoLastModified: Sun, 18 Aug 2024 02:24:45 GMT
+ repoEtag: '"bde737f569d0a807b0163c9db26962dd9c77f8c0662a6660c5a86f30c7bea645"'
+ repoLastModified: Thu, 22 Aug 2024 18:05:29 GMT
foundInMaster: true
- source:
- https://openapi.tools/
@@ -2592,12 +2592,12 @@
language: TypeScript
archived: false
stars: 2428
- watchers: 32
+ watchers: 33
forks: 235
owner: stoplightio
logo: https://avatars.githubusercontent.com/u/10767217?v=4
license: Apache-2.0
- repoEtag: '"175876e0117e8fb10249cbfb664f38ba2102673355388c087a2072f414216f3b"'
+ repoEtag: '"514694c921c626c8feeae90b910c78a2f334a156b9f0301868de0604daad5337"'
repoLastModified: Wed, 21 Aug 2024 13:15:11 GMT
foundInMaster: true
id: fab3cc58898cd8953a30e43cc622e0fe
@@ -2632,7 +2632,7 @@
owner: OpenAPITools
logo: https://avatars.githubusercontent.com/u/37325267?v=4
license: Apache-2.0
- repoEtag: '"01b3cb61b2a03ca3e4b876b43bf497a7933acac6eabc3ecf217160c5912608a7"'
+ repoEtag: '"e6fbd88b5a5720f0fd5169f139d4dbc93368ffa4bc87aa3ac5dd11f1098325e9"'
repoLastModified: Tue, 20 Aug 2024 20:10:26 GMT
foundInMaster: true
id: 30d322c922366df3f6f8fb9c681b2139
@@ -2683,7 +2683,7 @@
⚒️ Redocly CLI makes OpenAPI easy. Lint/validate to any standard, generate
beautiful docs, and more.
created: '2019-09-10T14:56:25Z'
- updated: '2024-08-21T12:57:47Z'
+ updated: '2024-08-22T07:45:33Z'
language: TypeScript
archived: false
stars: 893
@@ -2692,8 +2692,8 @@
owner: Redocly
logo: https://avatars.githubusercontent.com/u/32099856?v=4
license: MIT
- repoEtag: '"75adf939ed2f4648daffd70c8add5089d26ed0bcc666a242f1847a6af56218a2"'
- repoLastModified: Wed, 21 Aug 2024 12:57:47 GMT
+ repoEtag: '"b7ab24ce7020f7bf863781827161fe622c63407fb8359ac6c6e9781fa146ff3d"'
+ repoLastModified: Thu, 22 Aug 2024 07:45:33 GMT
category:
- Description Validators
- Documentation
@@ -2810,7 +2810,7 @@
owner: ahx
logo: https://avatars.githubusercontent.com/u/8669?v=4
license: MIT
- repoEtag: '"a2aaae9ec9b6007e0dca1ec555f8ec74db6f7ebe59c3a26051bc8fd43d5c6017"'
+ repoEtag: '"cf872e4e3449e1ff76bfee6820dc2806f9efbadc52be72454b24934cd1f8a2b8"'
repoLastModified: Wed, 21 Aug 2024 15:35:54 GMT
foundInMaster: true
category: Data Validators
@@ -2907,17 +2907,17 @@
repositoryId: 25453221
description: Swagger 2.0 and OpenAPI 3.0 parser/validator
created: '2014-10-20T06:14:51Z'
- updated: '2024-08-21T07:30:49Z'
+ updated: '2024-08-22T11:24:50Z'
language: JavaScript
archived: false
- stars: 1084
+ stars: 1085
watchers: 18
forks: 154
owner: APIDevTools
logo: https://avatars.githubusercontent.com/u/43750074?v=4
license: MIT
- repoEtag: '"056edef1e09f11744ed9bf9a61b9db9994446645a2b5b4594d85dab060b3ea68"'
- repoLastModified: Wed, 21 Aug 2024 07:30:49 GMT
+ repoEtag: '"d2fb69da9173dfe2dbea79c00034ded4c7d04f5f1a5fa5b373247dae2955a028"'
+ repoLastModified: Thu, 22 Aug 2024 11:24:50 GMT
category: Parsers
foundInMaster: true
name: APIDevTools/swagger-parser
@@ -3067,25 +3067,25 @@
v3: true
repositoryMetadata:
base64Readme: >-
- WyFbQ0ldKGh0dHBzOi8vZ2l0aHViLmNvbS9nZXRraW4va2luLW9wZW5hcGkvd29ya2Zsb3dzL2dvL2JhZGdlLnN2ZyldKGh0dHBzOi8vZ2l0aHViLmNvbS9nZXRraW4va2luLW9wZW5hcGkvYWN0aW9ucykKWyFbR28gUmVwb3J0IENhcmRdKGh0dHBzOi8vZ29yZXBvcnRjYXJkLmNvbS9iYWRnZS9naXRodWIuY29tL2dldGtpbi9raW4tb3BlbmFwaSldKGh0dHBzOi8vZ29yZXBvcnRjYXJkLmNvbS9yZXBvcnQvZ2l0aHViLmNvbS9nZXRraW4va2luLW9wZW5hcGkpClshW0dvRG9jXShodHRwczovL2dvZG9jLm9yZy9naXRodWIuY29tL2dldGtpbi9raW4tb3BlbmFwaT9zdGF0dXMuc3ZnKV0oaHR0cHM6Ly9nb2RvYy5vcmcvZ2l0aHViLmNvbS9nZXRraW4va2luLW9wZW5hcGkpClshW0pvaW4gR2l0dGVyIENoYXQgQ2hhbm5lbCAtXShodHRwczovL2JhZGdlcy5naXR0ZXIuaW0vZ2V0a2luL2tpbi5zdmcpXShodHRwczovL2dpdHRlci5pbS9nZXRraW4va2luP3V0bV9zb3VyY2U9YmFkZ2UmdXRtX21lZGl1bT1iYWRnZSZ1dG1fY2FtcGFpZ249cHItYmFkZ2UmdXRtX2NvbnRlbnQ9YmFkZ2UpCgojIEludHJvZHVjdGlvbgpBIFtHb10oaHR0cHM6Ly9nb2xhbmcub3JnKSBwcm9qZWN0IGZvciBoYW5kbGluZyBbT3BlbkFQSV0oaHR0cHM6Ly93d3cub3BlbmFwaXMub3JnLykgZmlsZXMuIFdlIHRhcmdldDoKKiBbT3BlbkFQSSBgdjIuMGBdKGh0dHBzOi8vZ2l0aHViLmNvbS9PQUkvT3BlbkFQSS1TcGVjaWZpY2F0aW9uL2Jsb2IvbWFpbi92ZXJzaW9ucy8yLjAubWQpIChmb3JtZXJseSBrbm93biBhcyBTd2FnZ2VyKQoqIFtPcGVuQVBJIGB2My4wYF0oaHR0cHM6Ly9naXRodWIuY29tL09BSS9PcGVuQVBJLVNwZWNpZmljYXRpb24vYmxvYi9tYWluL3ZlcnNpb25zLzMuMC4zLm1kKQoqIFtPcGVuQVBJIGB2My4xYF0oaHR0cHM6Ly9naXRodWIuY29tL09BSS9PcGVuQVBJLVNwZWNpZmljYXRpb24vYmxvYi9tYWluL3ZlcnNpb25zLzMuMS4wLm1kKSBTb29uISBbVHJhY2tpbmcgaXNzdWUgaGVyZS5dKGh0dHBzOi8vZ2l0aHViLmNvbS9nZXRraW4va2luLW9wZW5hcGkvaXNzdWVzLzIzMCkKCkxpY2Vuc2VkIHVuZGVyIHRoZSBbTUlUIExpY2Vuc2VdKC4vTElDRU5TRSkuCgojIyBDb250cmlidXRvcnMsIHVzZXJzIGFuZCBzcG9uc29ycwpUaGUgcHJvamVjdCBoYXMgcmVjZWl2ZWQgcHVsbCByZXF1ZXN0cyBbZnJvbSBtYW55IHBlb3BsZV0oaHR0cHM6Ly9naXRodWIuY29tL2dldGtpbi9raW4tb3BlbmFwaS9ncmFwaHMvY29udHJpYnV0b3JzKS4gVGhhbmtzIHRvIGV2ZXJ5b25lIQoKUGxlYXNlLCBbZ2l2ZSBiYWNrIHRvIHRoaXMgcHJvamVjdF0oaHR0cHM6Ly9naXRodWIuY29tL3Nwb25zb3JzL2Zlbm9sbHApIGJ5IGJlY29taW5nIGEgc3BvbnNvci4KCkhlcmUncyBzb21lIHByb2plY3RzIHRoYXQgZGVwZW5kIG9uIF9raW4tb3BlbmFwaV86CiAgKiBbZ2l0aHViLmNvbS9hLWgvcmVzdF0oaHR0cHM6Ly9naXRodWIuY29tL2EtaC9yZXN0KSAtICJHZW5lcmF0ZSBPcGVuQVBJIDMuMCBzcGVjaWZpY2F0aW9ucyBmcm9tIEdvIGNvZGUgd2l0aG91dCBhbm5vdGF0aW9ucyBvciBtYWdpYyBjb21tZW50cyIKICAqIFtnaXRodWIuY29tL1R1ZmluL29hc2RpZmZdKGh0dHBzOi8vZ2l0aHViLmNvbS9UdWZpbi9vYXNkaWZmKSAtICJBIGRpZmYgdG9vbCBmb3IgT3BlbkFQSSBTcGVjaWZpY2F0aW9uIDMiCiAgKiBbZ2l0aHViLmNvbS9kYW5pZWxndGF5bG9yL2FwaXNwcm91dF0oaHR0cHM6Ly9naXRodWIuY29tL2RhbmllbGd0YXlsb3IvYXBpc3Byb3V0KSAtICJMaWdodHdlaWdodCwgYmxhemluZyBmYXN0LCBjcm9zcy1wbGF0Zm9ybSBPcGVuQVBJIDMgbW9jayBzZXJ2ZXIgd2l0aCB2YWxpZGF0aW9uIgogICogW2dpdGh1Yi5jb20vZGVlcG1hcC9vYXBpLWNvZGVnZW5dKGh0dHBzOi8vZ2l0aHViLmNvbS9kZWVwbWFwL29hcGktY29kZWdlbikgLSAiR2VuZXJhdGUgR28gY2xpZW50IGFuZCBzZXJ2ZXIgYm9pbGVycGxhdGUgZnJvbSBPcGVuQVBJIDMgc3BlY2lmaWNhdGlvbnMiCiAgKiBbZ2l0aHViLmNvbS9kdW5nbGFzL3Z1bGNhaW5dKGh0dHBzOi8vZ2l0aHViLmNvbS9kdW5nbGFzL3Z1bGNhaW4pIC0gIlVzZSBIVFRQLzIgU2VydmVyIFB1c2ggdG8gY3JlYXRlIGZhc3QgYW5kIGlkaW9tYXRpYyBjbGllbnQtZHJpdmVuIFJFU1QgQVBJcyIKICAqIFtnaXRodWIuY29tL2RhbmllbGd0YXlsb3IvcmVzdGlzaF0oaHR0cHM6Ly9naXRodWIuY29tL2RhbmllbGd0YXlsb3IvcmVzdGlzaCkgLSAiLi4uYSBDTEkgZm9yIGludGVyYWN0aW5nIHdpdGggUkVTVC1pc2ggSFRUUCBBUElzIHdpdGggc29tZSBuaWNlIGZlYXR1cmVzIGJ1aWx0LWluIgogICogW2dpdGh1Yi5jb20vZ29hZGVzaWduL2dvYV0oaHR0cHM6Ly9naXRodWIuY29tL2dvYWRlc2lnbi9nb2EpIC0gIkRlc2lnbi1iYXNlZCBBUElzIGFuZCBtaWNyb3NlcnZpY2VzIGluIEdvIgogICogW2dpdGh1Yi5jb20vaGFzaGljb3JwL25vbWFkLW9wZW5hcGldKGh0dHBzOi8vZ2l0aHViLmNvbS9oYXNoaWNvcnAvbm9tYWQtb3BlbmFwaSkgLSAiTm9tYWQgaXMgYW4gZWFzeS10by11c2UsIGZsZXhpYmxlLCBhbmQgcGVyZm9ybWFudCB3b3JrbG9hZCBvcmNoZXN0cmF0b3IgdGhhdCBjYW4gZGVwbG95IGEgbWl4IG9mIG1pY3Jvc2VydmljZSwgYmF0Y2gsIGNvbnRhaW5lcml6ZWQsIGFuZCBub24tY29udGFpbmVyaXplZCBhcHBsaWNhdGlvbnMuIE5vbWFkIGlzIGVhc3kgdG8gb3BlcmF0ZSBhbmQgc2NhbGUgYW5kIGhhcyBuYXRpdmUgQ29uc3VsIGFuZCBWYXVsdCBpbnRlZ3JhdGlvbnMuIgogICogW2dpdGxhYi5jb20vamFtaWV0YW5uYS9odHRwdGVzdC1vcGVuYXBpXShodHRwczovL2dpdGxhYi5jb20vamFtaWV0YW5uYS9odHRwdGVzdC1vcGVuYXBpKSAoWypibG9nIHBvc3QqXShodHRwczovL3d3dy5qdnQubWUvcG9zdHMvMjAyMi8wNS8yMi9nby1vcGVuYXBpLWNvbnRyYWN0LXRlc3QvKSkgLSAiR28gT3BlbkFQSSBDb250cmFjdCBWZXJpZmljYXRpb24gZm9yIHVzZSB3aXRoIGBuZXQvaHR0cGAiCiAgKiBbZ2l0aHViLmNvbS9TSU1JVEdST1VQL29wZW5hcGlnZW5lcmF0b3JdKGh0dHBzOi8vZ2l0aHViLmNvbS9TSU1JVEdST1VQL29wZW5hcGlnZW5lcmF0b3IpIC0gIk9wZW5hcGkgdjMgbWljcm9zZXJ2aWNlcyBnZW5lcmF0b3IiCiAgKiBbaHR0cHM6Ly9naXRodWIuY29tL3Byb2plY3RzdmVsdG9zL2FkZG9uLWNvbnRyb2xsZXJdKGh0dHBzOi8vZ2l0aHViLmNvbS9wcm9qZWN0c3ZlbHRvcy9hZGRvbi1jb250cm9sbGVyKSAtICJLdWJlcm5ldGVzIGFkZC1vbiBjb250cm9sbGVyIGRlc2lnbmVkIHRvIG1hbmFnZSB0ZW5zIG9mIGNsdXN0ZXJzLiIKICAqIChGZWVsIGZyZWUgdG8gYWRkIHlvdXIgcHJvamVjdCBieSBbY3JlYXRpbmcgYW4gaXNzdWVdKGh0dHBzOi8vZ2l0aHViLmNvbS9nZXRraW4va2luLW9wZW5hcGkvaXNzdWVzL25ldykgb3IgYSBwdWxsIHJlcXVlc3QpCgojIyBBbHRlcm5hdGl2ZXMKKiBbZ28tc3dhZ2dlcl0oaHR0cHM6Ly9naXRodWIuY29tL2dvLXN3YWdnZXIvZ28tc3dhZ2dlcikgc3RhdGVkIFsqT3BlbkFQSXYzIHdvbid0IGJlIHN1cHBvcnRlZCpdKGh0dHBzOi8vZ2l0aHViLmNvbS9nby1zd2FnZ2VyL2dvLXN3YWdnZXIvaXNzdWVzLzExMjIjaXNzdWVjb21tZW50LTU3NTk2ODQ5OSkKKiBbc3dhZ2dvXShodHRwczovL2dpdGh1Yi5jb20vc3dhZ2dvL3N3YWcpIGhhcyBhbiBbb3BlbiBpc3N1ZSBvbiBPcGVuQVBJdjNdKGh0dHBzOi8vZ2l0aHViLmNvbS9zd2FnZ28vc3dhZy9pc3N1ZXMvMzg2KQoqIFtnby1vcGVuYXBpXShodHRwczovL2dpdGh1Yi5jb20vZ28tb3BlbmFwaSkncyBbc3BlYzNdKGh0dHBzOi8vZ2l0aHViLmNvbS9nby1vcGVuYXBpL3NwZWMzKQoJKiBhbiBpdGVyYXRpb24gb24gW3NwZWNdKGh0dHBzOi8vZ2l0aHViLmNvbS9nby1vcGVuYXBpL3NwZWMpIChmb3IgT3BlbkFQSXYyKQoJKiBzZWUgW1JFQURNRV0oaHR0cHM6Ly9naXRodWIuY29tL2dvLW9wZW5hcGkvc3BlYzMvdHJlZS8zZmFiOWZhYTkwOTRlMDZlYmQxOWRlZDdlYTk2ZDE1NmMyMjgzZGNhI29haS1vYmplY3QtbW9kZWwtLS0pIGZvciB0aGUgbWlzc2luZyBwYXJ0cwoKQmUgc3VyZSB0byBjaGVjayBbT3BlbkFQSSBJbml0aWF0aXZlXShodHRwczovL2dpdGh1Yi5jb20vT0FJKSdzIFtncmVhdCB0b29saW5nIGxpc3RdKGh0dHBzOi8vZ2l0aHViLmNvbS9PQUkvT3BlbkFQSS1TcGVjaWZpY2F0aW9uL2Jsb2IvbWFzdGVyL0lNUExFTUVOVEFUSU9OUy5tZCkgYXMgd2VsbCBhcyBbT3BlbkFQSS5Ub29sc10oaHR0cHM6Ly9vcGVuYXBpLnRvb2xzLykuCgojIFN0cnVjdHVyZQogICogX29wZW5hcGkyXyAoW2dvZG9jXShodHRwczovL2dvZG9jLm9yZy9naXRodWIuY29tL2dldGtpbi9raW4tb3BlbmFwaS9vcGVuYXBpMikpCiAgICAqIFN1cHBvcnQgZm9yIE9wZW5BUEkgMiBmaWxlcywgaW5jbHVkaW5nIHNlcmlhbGl6YXRpb24sIGRlc2VyaWFsaXphdGlvbiwgYW5kIHZhbGlkYXRpb24uCiAgKiBfb3BlbmFwaTJjb252XyAoW2dvZG9jXShodHRwczovL2dvZG9jLm9yZy9naXRodWIuY29tL2dldGtpbi9raW4tb3BlbmFwaS9vcGVuYXBpMmNvbnYpKQogICAgKiBDb252ZXJ0cyBPcGVuQVBJIDIgZmlsZXMgaW50byBPcGVuQVBJIDMgZmlsZXMuCiAgKiBfb3BlbmFwaTNfIChbZ29kb2NdKGh0dHBzOi8vZ29kb2Mub3JnL2dpdGh1Yi5jb20vZ2V0a2luL2tpbi1vcGVuYXBpL29wZW5hcGkzKSkKICAgICogU3VwcG9ydCBmb3IgT3BlbkFQSSAzIGZpbGVzLCBpbmNsdWRpbmcgc2VyaWFsaXphdGlvbiwgZGVzZXJpYWxpemF0aW9uLCBhbmQgdmFsaWRhdGlvbi4KICAqIF9vcGVuYXBpM2ZpbHRlcl8gKFtnb2RvY10oaHR0cHM6Ly9nb2RvYy5vcmcvZ2l0aHViLmNvbS9nZXRraW4va2luLW9wZW5hcGkvb3BlbmFwaTNmaWx0ZXIpKQogICAgKiBWYWxpZGF0ZXMgSFRUUCByZXF1ZXN0cyBhbmQgcmVzcG9uc2VzCiAgICAqIFByb3ZpZGVzIGEgW2dvcmlsbGEvbXV4XShodHRwczovL2dpdGh1Yi5jb20vZ29yaWxsYS9tdXgpIHJvdXRlciBmb3IgT3BlbkFQSSBvcGVyYXRpb25zCiAgKiBfb3BlbmFwaTNnZW5fIChbZ29kb2NdKGh0dHBzOi8vZ29kb2Mub3JnL2dpdGh1Yi5jb20vZ2V0a2luL2tpbi1vcGVuYXBpL29wZW5hcGkzZ2VuKSkKICAgICogR2VuZXJhdGVzIGAqb3BlbmFwaTMuU2NoZW1hYCB2YWx1ZXMgZm9yIEdvIHR5cGVzLgoKIyBTb21lIHJlY2lwZXMKIyMgVmFsaWRhdGluZyBhbiBPcGVuQVBJIGRvY3VtZW50CmBgYHNoZWxsCmdvIHJ1biBnaXRodWIuY29tL2dldGtpbi9raW4tb3BlbmFwaS9jbWQvdmFsaWRhdGVAbGF0ZXN0IFstLWNpcmN1bGFyXSBbLS1kZWZhdWx0c10gWy0tZXhhbXBsZXNdIFstLWV4dF0gWy0tcGF0dGVybnNdIC0tIDxsb2NhbCBZQU1MIG9yIEpTT04gZmlsZT4KYGBgCgojIyBMb2FkaW5nIE9wZW5BUEkgZG9jdW1lbnQKVXNlIGBvcGVuYXBpMy5Mb2FkZXJgLCB3aGljaCByZXNvbHZlcyBhbGwgcmVmZXJlbmNlczoKYGBgZ28KbG9hZGVyIDo9IG9wZW5hcGkzLk5ld0xvYWRlcigpCmRvYywgZXJyIDo9IGxvYWRlci5Mb2FkRnJvbUZpbGUoIm15LW9wZW5hcGktc3BlYy5qc29uIikKYGBgCgojIyBHZXR0aW5nIE9wZW5BUEkgb3BlcmF0aW9uIHRoYXQgbWF0Y2hlcyByZXF1ZXN0CmBgYGdvCmxvYWRlciA6PSBvcGVuYXBpMy5OZXdMb2FkZXIoKQpkb2MsIF8gOj0gbG9hZGVyLkxvYWRGcm9tRGF0YShbXWJ5dGUoYC4uLmApKQpfID0gZG9jLlZhbGlkYXRlKGxvYWRlci5Db250ZXh0KQpyb3V0ZXIsIF8gOj0gZ29yaWxsYW11eC5OZXdSb3V0ZXIoZG9jKQpyb3V0ZSwgcGF0aFBhcmFtcywgXyA6PSByb3V0ZXIuRmluZFJvdXRlKGh0dHBSZXF1ZXN0KQovLyBEbyBzb21ldGhpbmcgd2l0aCByb3V0ZS5PcGVyYXRpb24KYGBgCgojIyBWYWxpZGF0aW5nIEhUVFAgcmVxdWVzdHMvcmVzcG9uc2VzCmBgYGdvCnBhY2thZ2UgbWFpbgoKaW1wb3J0ICgKCSJjb250ZXh0IgoJImZtdCIKCSJuZXQvaHR0cCIKCgkiZ2l0aHViLmNvbS9nZXRraW4va2luLW9wZW5hcGkvb3BlbmFwaTMiCgkiZ2l0aHViLmNvbS9nZXRraW4va2luLW9wZW5hcGkvb3BlbmFwaTNmaWx0ZXIiCgkiZ2l0aHViLmNvbS9nZXRraW4va2luLW9wZW5hcGkvcm91dGVycy9nb3JpbGxhbXV4IgopCgpmdW5jIG1haW4oKSB7CgljdHggOj0gY29udGV4dC5CYWNrZ3JvdW5kKCkKCWxvYWRlciA6PSAmb3BlbmFwaTMuTG9hZGVye0NvbnRleHQ6IGN0eCwgSXNFeHRlcm5hbFJlZnNBbGxvd2VkOiB0cnVlfQoJZG9jLCBfIDo9IGxvYWRlci5Mb2FkRnJvbUZpbGUoIi4uLi9NeS1PcGVuQVBJdjMtQVBJLnltbCIpCgkvLyBWYWxpZGF0ZSBkb2N1bWVudAoJXyA9IGRvYy5WYWxpZGF0ZShjdHgpCglyb3V0ZXIsIF8gOj0gZ29yaWxsYW11eC5OZXdSb3V0ZXIoZG9jKQoJaHR0cFJlcSwgXyA6PSBodHRwLk5ld1JlcXVlc3QoaHR0cC5NZXRob2RHZXQsICIvaXRlbXMiLCBuaWwpCgoJLy8gRmluZCByb3V0ZQoJcm91dGUsIHBhdGhQYXJhbXMsIF8gOj0gcm91dGVyLkZpbmRSb3V0ZShodHRwUmVxKQoKCS8vIFZhbGlkYXRlIHJlcXVlc3QKCXJlcXVlc3RWYWxpZGF0aW9uSW5wdXQgOj0gJm9wZW5hcGkzZmlsdGVyLlJlcXVlc3RWYWxpZGF0aW9uSW5wdXR7CgkJUmVxdWVzdDogICAgaHR0cFJlcSwKCQlQYXRoUGFyYW1zOiBwYXRoUGFyYW1zLAoJCVJvdXRlOiAgICAgIHJvdXRlLAoJfQoJXyA9IG9wZW5hcGkzZmlsdGVyLlZhbGlkYXRlUmVxdWVzdChjdHgsIHJlcXVlc3RWYWxpZGF0aW9uSW5wdXQpCgoJLy8gSGFuZGxlIHRoYXQgcmVxdWVzdAoJLy8gLS0+IFlPVVIgQ09ERSBHT0VTIEhFUkUgPC0tCglyZXNwb25zZUhlYWRlcnMgOj0gaHR0cC5IZWFkZXJ7IkNvbnRlbnQtVHlwZSI6IFtdc3RyaW5neyJhcHBsaWNhdGlvbi9qc29uIn19CglyZXNwb25zZUNvZGUgOj0gMjAwCglyZXNwb25zZUJvZHkgOj0gW11ieXRlKGB7fWApCgoJLy8gVmFsaWRhdGUgcmVzcG9uc2UKCXJlc3BvbnNlVmFsaWRhdGlvbklucHV0IDo9ICZvcGVuYXBpM2ZpbHRlci5SZXNwb25zZVZhbGlkYXRpb25JbnB1dHsKCQlSZXF1ZXN0VmFsaWRhdGlvbklucHV0OiByZXF1ZXN0VmFsaWRhdGlvbklucHV0LAoJCVN0YXR1czogICAgICAgICAgICAgICAgIHJlc3BvbnNlQ29kZSwKCQlIZWFkZXI6ICAgICAgICAgICAgICAgICByZXNwb25zZUhlYWRlcnMsCgl9CglyZXNwb25zZVZhbGlkYXRpb25JbnB1dC5TZXRCb2R5Qnl0ZXMocmVzcG9uc2VCb2R5KQoJXyA9IG9wZW5hcGkzZmlsdGVyLlZhbGlkYXRlUmVzcG9uc2UoY3R4LCByZXNwb25zZVZhbGlkYXRpb25JbnB1dCkKfQpgYGAKCiMjIEN1c3RvbSBjb250ZW50IHR5cGUgZm9yIGJvZHkgb2YgSFRUUCByZXF1ZXN0L3Jlc3BvbnNlCgpCeSBkZWZhdWx0LCB0aGUgbGlicmFyeSBwYXJzZXMgYSBib2R5IG9mIHRoZSBIVFRQIHJlcXVlc3QgYW5kIHJlc3BvbnNlCmlmIGl0IGhhcyBvbmUgb2YgdGhlIGZvbGxvd2luZyBjb250ZW50IHR5cGVzOiBgInRleHQvcGxhaW4iYCBvciBgImFwcGxpY2F0aW9uL2pzb24iYC4KVG8gc3VwcG9ydCBvdGhlciBjb250ZW50IHR5cGVzIHlvdSBtdXN0IHJlZ2lzdGVyIGRlY29kZXJzIGZvciB0aGVtOgoKYGBgZ28KZnVuYyBtYWluKCkgewoJLy8gLi4uCgoJLy8gUmVnaXN0ZXIgYSBib2R5J3MgZGVjb2RlciBmb3IgY29udGVudCB0eXBlICJhcHBsaWNhdGlvbi94bWwiLgoJb3BlbmFwaTNmaWx0ZXIuUmVnaXN0ZXJCb2R5RGVjb2RlcigiYXBwbGljYXRpb24veG1sIiwgeG1sQm9keURlY29kZXIpCgoJLy8gTm93IHlvdSBjYW4gdmFsaWRhdGUgSFRUUCByZXF1ZXN0IHRoYXQgY29udGFpbnMgYSBib2R5IHdpdGggY29udGVudCB0eXBlICJhcHBsaWNhdGlvbi94bWwiLgoJcmVxdWVzdFZhbGlkYXRpb25JbnB1dCA6PSAmb3BlbmFwaTNmaWx0ZXIuUmVxdWVzdFZhbGlkYXRpb25JbnB1dHsKCQlSZXF1ZXN0OiAgICBodHRwUmVxLAoJCVBhdGhQYXJhbXM6IHBhdGhQYXJhbXMsCgkJUm91dGU6ICAgICAgcm91dGUsCgl9CglpZiBlcnIgOj0gb3BlbmFwaTNmaWx0ZXIuVmFsaWRhdGVSZXF1ZXN0KGN0eCwgcmVxdWVzdFZhbGlkYXRpb25JbnB1dCk7IGVyciAhPSBuaWwgewoJCXBhbmljKGVycikKCX0KCgkvLyAuLi4KCgkvLyBBbmQgeW91IGNhbiB2YWxpZGF0ZSBIVFRQIHJlc3BvbnNlIHRoYXQgY29udGFpbnMgYSBib2R5IHdpdGggY29udGVudCB0eXBlICJhcHBsaWNhdGlvbi94bWwiLgoJaWYgZXJyIDo9IG9wZW5hcGkzZmlsdGVyLlZhbGlkYXRlUmVzcG9uc2UoY3R4LCByZXNwb25zZVZhbGlkYXRpb25JbnB1dCk7IGVyciAhPSBuaWwgewoJCXBhbmljKGVycikKCX0KfQoKZnVuYyB4bWxCb2R5RGVjb2Rlcihib2R5IGlvLlJlYWRlciwgaCBodHRwLkhlYWRlciwgc2NoZW1hICpvcGVuYXBpMy5TY2hlbWFSZWYsIGVuY0ZuIG9wZW5hcGkzZmlsdGVyLkVuY29kaW5nRm4pIChkZWNvZGVkIGFueSwgZXJyIGVycm9yKSB7CgkvLyBEZWNvZGUgYm9keSB0byBhIHByaW1pdGl2ZSwgW11hbnksIG9yIG1hcFtzdHJpbmddYW55Lgp9CmBgYAoKIyMgQ3VzdG9tIGZ1bmN0aW9uIHRvIGNoZWNrIHVuaXF1ZW5lc3Mgb2YgYXJyYXkgaXRlbXMKCkJ5IGRlZmF1bHQsIHRoZSBsaWJyYXJ5IGNoZWNrcyB1bmlxdWUgaXRlbXMgdXNpbmcgdGhlIGZvbGxvd2luZyBwcmVkZWZpbmVkIGZ1bmN0aW9uOgoKYGBgZ28KZnVuYyBpc1NsaWNlT2ZVbmlxdWVJdGVtcyh4cyBbXWFueSkgYm9vbCB7CglzIDo9IGxlbih4cykKCW0gOj0gbWFrZShtYXBbc3RyaW5nXXN0cnVjdHt9LCBzKQoJZm9yIF8sIHggOj0gcmFuZ2UgeHMgewoJCWtleSwgXyA6PSBqc29uLk1hcnNoYWwoJngpCgkJbVtzdHJpbmcoa2V5KV0gPSBzdHJ1Y3R7fXt9Cgl9CglyZXR1cm4gcyA9PSBsZW4obSkKfQpgYGAKCkluIHRoZSBwcmVkZWZpbmVkIGZ1bmN0aW9uIGBqc29uLk1hcnNoYWxgIGlzIHVzZWQgdG8gZ2VuZXJhdGUgYSBzdHJpbmcgdGhhdCBjYW4KYmUgdXNlZCBhcyBhIG1hcCBrZXkgd2hpY2ggaXMgdG8gY2hlY2sgdGhlIHVuaXF1ZW5lc3Mgb2YgYW4gYXJyYXkKd2hlbiB0aGUgYXJyYXkgaXRlbXMgYXJlIG9iamVjdHMgb3IgYXJyYXlzLiBZb3UgY2FuIHJlZ2lzdGVyCnlvdSBvd24gZnVuY3Rpb24gYWNjb3JkaW5nIHRvIHlvdXIgaW5wdXQgZGF0YSB0byBnZXQgYmV0dGVyIHBlcmZvcm1hbmNlOgoKYGBgZ28KZnVuYyBtYWluKCkgewoJLy8gLi4uCgoJLy8gUmVnaXN0ZXIgYSBjdXN0b21pemVkIGZ1bmN0aW9uIHVzZWQgdG8gY2hlY2sgdW5pcXVlbmVzcyBvZiBhcnJheS4KCW9wZW5hcGkzLlJlZ2lzdGVyQXJyYXlVbmlxdWVJdGVtc0NoZWNrZXIoYXJyYXlVbmlxdWVJdGVtc0NoZWNrZXIpCgoJLy8gLi4uIG90aGVyIHZhbGlkYXRlIGNvZGVzCn0KCmZ1bmMgYXJyYXlVbmlxdWVJdGVtc0NoZWNrZXIoaXRlbXMgW11hbnkpIGJvb2wgewoJLy8gQ2hlY2sgdGhlIHVuaXF1ZW5lc3Mgb2YgdGhlIGlucHV0IHNsaWNlCn0KYGBgCgojIyBDdXN0b20gZnVuY3Rpb24gdG8gY2hhbmdlIHNjaGVtYSBlcnJvciBtZXNzYWdlcwoKQnkgZGVmYXVsdCwgdGhlIGVycm9yIG1lc3NhZ2UgcmV0dXJuZWQgd2hlbiB2YWxpZGF0aW5nIGEgdmFsdWUgaW5jbHVkZXMgdGhlIGVycm9yIHJlYXNvbiwgdGhlIHNjaGVtYSwgYW5kIHRoZSBpbnB1dCB2YWx1ZS4KCkZvciBleGFtcGxlLCBnaXZlbiB0aGUgZm9sbG93aW5nIHNjaGVtYToKCmBgYGpzb24KewogICJ0eXBlIjogInN0cmluZyIsCiAgImFsbE9mIjogWwogICAgeyAicGF0dGVybiI6ICJbQS1aXSIgfSwKICAgIHsgInBhdHRlcm4iOiAiW2Etel0iIH0sCiAgICB7ICJwYXR0ZXJuIjogIlswLTldIiB9LAogICAgeyAicGF0dGVybiI6ICJbIUAjJCVeJiooKV8rPS0/fl0iIH0KICBdCn0KYGBgCgpQYXNzaW5nIHRoZSBpbnB1dCB2YWx1ZSBgInNlY3JldCJgIHRvIHRoaXMgc2NoZW1hIHdpbGwgcHJvZHVjZSB0aGUgZm9sbG93aW5nIGVycm9yIG1lc3NhZ2U6CgpgYGAKc3RyaW5nIGRvZXNuJ3QgbWF0Y2ggdGhlIHJlZ3VsYXIgZXhwcmVzc2lvbiAiW0EtWl0iClNjaGVtYToKICB7CiAgICAicGF0dGVybiI6ICJbQS1aXSIKICB9CgpWYWx1ZToKICAic2VjcmV0IgpgYGAKCkluY2x1ZGluZyB0aGUgb3JpZ2luYWwgdmFsdWUgaW4gdGhlIGVycm9yIG1lc3NhZ2UgY2FuIGJlIGhlbHBmdWwgZm9yIGRlYnVnZ2luZywgYnV0IGl0IG1heSBub3QgYmUgYXBwcm9wcmlhdGUgZm9yIHNlbnNpdGl2ZSBpbmZvcm1hdGlvbiBzdWNoIGFzIHNlY3JldHMuCgpUbyBkaXNhYmxlIHRoZSBleHRyYSBkZXRhaWxzIGluIHRoZSBzY2hlbWEgZXJyb3IgbWVzc2FnZSwgeW91IGNhbiBzZXQgdGhlIGBvcGVuYXBpMy5TY2hlbWFFcnJvckRldGFpbHNEaXNhYmxlZGAgb3B0aW9uIHRvIGB0cnVlYDoKCmBgYGdvCmZ1bmMgbWFpbigpIHsKCS8vIC4uLgoKCS8vIERpc2FibGUgc2NoZW1hIGVycm9yIGRldGFpbGVkIGVycm9yIG1lc3NhZ2VzCglvcGVuYXBpMy5TY2hlbWFFcnJvckRldGFpbHNEaXNhYmxlZCA9IHRydWUKCgkvLyAuLi4gb3RoZXIgdmFsaWRhdGUgY29kZXMKfQpgYGAKClRoaXMgd2lsbCBzaG9ydGVuIHRoZSBlcnJvciBtZXNzYWdlIHRvIHByZXNlbnQgb25seSB0aGUgcmVhc29uOgoKYGBgCnN0cmluZyBkb2Vzbid0IG1hdGNoIHRoZSByZWd1bGFyIGV4cHJlc3Npb24gIltBLVpdIgpgYGAKCkZvciBtb3JlIGZpbmUtZ3JhaW5lZCBjb250cm9sIG92ZXIgdGhlIGVycm9yIG1lc3NhZ2UsIHlvdSBjYW4gcGFzcyBhIGN1c3RvbSBgb3BlbmFwaTNmaWx0ZXIuT3B0aW9uc2Agb2JqZWN0IHRvIGBvcGVuYXBpM2ZpbHRlci5SZXF1ZXN0VmFsaWRhdGlvbklucHV0YCB0aGF0IGluY2x1ZGVzIGEgYG9wZW5hcGkzZmlsdGVyLkN1c3RvbVNjaGVtYUVycm9yRnVuY2AuCgpgYGBnbwpmdW5jIHZhbGlkYXRpb25PcHRpb25zKCkgKm9wZW5hcGkzZmlsdGVyLk9wdGlvbnMgewoJb3B0aW9ucyA6PSAmb3BlbmFwaTNmaWx0ZXIuT3B0aW9uc3t9CglvcHRpb25zLldpdGhDdXN0b21TY2hlbWFFcnJvckZ1bmMoc2FmZUVycm9yTWVzc2FnZSkKCXJldHVybiBvcHRpb25zCn0KCmZ1bmMgc2FmZUVycm9yTWVzc2FnZShlcnIgKm9wZW5hcGkzLlNjaGVtYUVycm9yKSBzdHJpbmcgewoJcmV0dXJuIGVyci5SZWFzb24KfQpgYGAKClRoaXMgd2lsbCBjaGFuZ2UgdGhlIHNjaGVtYSB2YWxpZGF0aW9uIGVycm9ycyB0byByZXR1cm4gb25seSB0aGUgYFJlYXNvbmAgZmllbGQsIHdoaWNoIGlzIGd1YXJhbnRlZWQgdG8gbm90IGluY2x1ZGUgdGhlIG9yaWdpbmFsIHZhbHVlLgoKIyMgUmVjb25jaWxpbmcgY29tcG9uZW50ICRyZWYgdHlwZXMKCmBSZWZlcmVuY2VzQ29tcG9uZW50SW5Sb290RG9jdW1lbnRgIGlzIGEgdXNlZnVsIGhlbHBlciBmdW5jdGlvbiB0byBjaGVjayBpZiBhIGNvbXBvbmVudCByZWZlcmVuY2UKY29pbmNpZGVzIHdpdGggYSByZWZlcmVuY2UgaW4gdGhlIHJvb3QgZG9jdW1lbnQncyBjb21wb25lbnQgb2JqZWN0cyBmaXhlZCBmaWVsZHMuCgpUaGlzIGNhbiBiZSB1c2VkIHRvIGRldGVybWluZSBpZiB0d28gc2NoZW1hIGRlZmluaXRpb25zIGFyZSBvZiB0aGUgc2FtZSBzdHJ1Y3R1cmUsIGhlbHBmdWwgZm9yCmNvZGUgZ2VuZXJhdGlvbiB0b29scyB3aGVuIGdlbmVyYXRpbmcgZ28gdHlwZSBtb2RlbHMuCgpgYGBnbwpkb2MsIGVyciA9IGxvYWRlci5Mb2FkRnJvbUZpbGUoIm9wZW5hcGkueW1sIikKCmZvciBfLCBwYXRoIDo9IHJhbmdlIGRvYy5QYXRocy5Jbk1hdGNoaW5nT3JkZXIoKSB7CglwYXRoSXRlbSA6PSBkb2MuUGF0aHMuRmluZChwYXRoKQoKCWlmIHBhdGhJdGVtLkdldCA9PSBuaWwgfHwgcGF0aEl0ZW0uR2V0LlJlc3BvbnNlcy5TdGF0dXMoMjAwKSB7CgkJY29udGludWUKCX0KCglmb3IgXywgcyA6PSByYW5nZSBwYXRoSXRlbS5HZXQuUmVzcG9uc2VzLlN0YXR1cygyMDApLlZhbHVlLkNvbnRlbnQgewoJCW5hbWUsIG1hdGNoIDo9IFJlZmVyZW5jZXNDb21wb25lbnRJblJvb3REb2N1bWVudChkb2MsIHMuU2NoZW1hKQoJCWZtdC5QcmludGxuKHBhdGgsIG1hdGNoLCBuYW1lKSAvLyAvcmVjb3JkIHRydWUgIy9jb21wb25lbnRzL3NjaGVtYXMvQm9va1JlY29yZAoJfQp9CmBgYAoKIyMgQ0hBTkdFTE9HOiBTdWItdjEgYnJlYWtpbmcgQVBJIGNoYW5nZXMKCiMjIyB2MC4xMjcuMAoqIERvd25ncmFkZWQgYGdpdGh1Yi5jb20vZ29yaWxsYS9tdXhgIGRlcCBmcm9tIGAxLjguMWAgdG8gYDEuOC4wYC4KCiMjIyB2MC4xMjYuMAoqIGBvcGVuYXBpMy5DaXJjdWxhclJlZmVyZW5jZUVycm9yYCBhbmQgYG9wZW5hcGkzLkNpcmN1bGFyUmVmZXJlbmNlQ291bnRlcmAgYXJlIHJlbW92ZWQuIGBvcGVuYXBpMy5Mb2FkZXJgIG5vdyBpbXBsZW1lbnRzIHJlZmVyZW5jZSBiYWNrdHJhY2tpbmcsIHNvIGFueSBraW5kIG9mIGNpcmN1bGFyIHJlZmVyZW5jZXMgc2hvdWxkIGJlIHByb3Blcmx5IHJlc29sdmVkLgoqIGBJbnRlcm5hbGl6ZVJlZnNgIG5vdyB0YWtlcyBhIHJlZk5hbWVSZXNvbHZlciB0aGF0IGhhcyBhY2Nlc3MgdG8gYG9wZW5hcGkzLlRgIGFuZCBtb3JlIHByb3BlcnRpZXMgb2YgdGhlIHJlZmVyZW5jZSBuZWVkaW5nIHJlc29sdmluZy4KKiBUaGUgYERlZmF1bHRSZWZOYW1lUmVzb2x2ZXJgIGhhcyBiZWVuIHVwZGF0ZWQsIGNob29zaW5nIG5hbWVzIHRoYXQgd2lsbCBiZSBsZXNzIGxpa2VseSB0byBjb2xsaWRlIHdpdGggZWFjaCBvdGhlci4gQmVjYXVzZSBvZiB0aGlzIGludGVybmFsaXplZCBzcGVjcyB3aWxsIGxpa2VseSBjaGFuZ2Ugc2xpZ2h0bHkuCiogYG9wZW5hcGkzLkZvcm1hdGAgYW5kIGBvcGVuYXBpMy5Gb3JtYXRDYWxsYmFja2AgYXJlIHJlbW92ZWQgYW5kIHRoZSB0eXBlIG9mIGBvcGVuYXBpMy5TY2hlbWFTdHJpbmdGb3JtYXRzYCBoYXMgY2hhbmdlZC4KCiMjIyB2MC4xMjUuMAoqIFRoZSBgb3BlbmFwaTNmaWx0ZXIuRXJyRnVuY2AgYW5kIGBvcGVuYXBpM2ZpbHRlci5Mb2dGdW5jYCBmdW5jIHR5cGVzIG5vdyB0YWtlIHRoZSB2YWxpZGF0ZWQgcmVxdWVzdCdzIGNvbnRleHQgYXMgZmlyc3QgYXJndW1lbnQuCgojIyMgdjAuMTI0LjAKKiBgb3BlbmFwaTMuU2NoZW1hLlR5cGVgICYgYG9wZW5hcGkyLlBhcmFtZXRlci5UeXBlYCBmaWVsZHMgd2VudCBmcm9tIGEgYHN0cmluZ2AgdG8gdGhlIHR5cGUgYCpUeXBlYCB3aXRoIG1ldGhvZHM6IGBJbmNsdWRlc2AsIGBJc2AsIGBQZXJtaXRzYCAmIGBTbGljZWAuCgojIyMgdjAuMTIyLjAKKiBgUGF0aHNgIGZpZWxkIG9mIGBvcGVuYXBpMy5UYCBpcyBub3cgYSBwb2ludGVyCiogYFJlc3BvbnNlc2AgZmllbGQgb2YgYG9wZW5hcGkzLk9wZXJhdGlvbmAgaXMgbm93IGEgcG9pbnRlcgoqIGBvcGVuYXBpMy5QYXRoc2Agd2VudCBmcm9tIGBtYXBbc3RyaW5nXSpQYXRoSXRlbWAgdG8gYSBzdHJ1Y3Qgd2l0aCBhbiBgRXh0ZW5zaW9uc2AgZmllbGQgYW5kIG1ldGhvZHM6IGBTZXRgLCBgVmFsdWVgLCBgTGVuYCwgYE1hcGAsIGFuZCBgTmV3KmAuCiogYG9wZW5hcGkzLkNhbGxiYWNrYCB3ZW50IGZyb20gYG1hcFtzdHJpbmddKlBhdGhJdGVtYCB0byBhIHN0cnVjdCB3aXRoIGFuIGBFeHRlbnNpb25zYCBmaWVsZCBhbmQgbWV0aG9kczogYFNldGAsIGBWYWx1ZWAsIGBMZW5gLCBgTWFwYCwgYW5kIGBOZXcqYC4KKiBgb3BlbmFwaTMuUmVzcG9uc2VzYCB3ZW50IGZyb20gYG1hcFtzdHJpbmddKlJlc3BvbnNlUmVmYCB0byBhIHN0cnVjdCB3aXRoIGFuIGBFeHRlbnNpb25zYCBmaWVsZCBhbmQgbWV0aG9kczogYFNldGAsIGBWYWx1ZWAsIGBMZW5gLCBgTWFwYCwgYW5kIGBOZXcqYC4KKiBgKG9wZW5hcGkzLlJlc3BvbnNlcykuR2V0KGludClgIHJlbmFtZWQgdG8gYCgqb3BlbmFwaTMuUmVzcG9uc2VzKS5TdGF0dXMoaW50KWAKCiMjIyB2MC4xMjEuMAoqIEludHJvZHVjZSBgb3BlbmFwaTMuUmVxdWVzdEJvZGllc2AgKGFuIGFsaWFzIG9uIGBtYXBbc3RyaW5nXSpvcGVuYXBpMy5SZXNwb25zZVJlZmApIGFuZCB1c2UgaXQgaW4gcGxhY2Ugb2YgYG9wZW5hcGkzLlJlc3BvbnNlc2AgZm9yIGZpZWxkIGBvcGVuYXBpMy5Db21wb25lbnRzLlJlc3BvbnNlc2AuCgojIyMgdjAuMTE2LjAKKiBEcm9wcGVkIGBvcGVuYXBpM2ZpbHRlci5EZWZhdWx0T3B0aW9uc2AuIFVzZSBgJm9wZW5hcGkzZmlsdGVyLk9wdGlvbnN7fWAgZGlyZWN0bHkgaW5zdGVhZC4KCiMjIyB2MC4xMTMuMAoqIFRoZSBzdHJpbmcgZm9ybWF0IGBlbWFpbGAgaGFzIGJlZW4gcmVtb3ZlZCBieSBkZWZhdWx0LiBUbyB1c2UgaXQgcGxlYXNlIGNhbGwgYG9wZW5hcGkzLkRlZmluZVN0cmluZ0Zvcm1hdCgiZW1haWwiLCBvcGVuYXBpMy5Gb3JtYXRPZlN0cmluZ0ZvckVtYWlsKWAuCiogRmllbGQgYG9wZW5hcGkzLlQuQ29tcG9uZW50c2AgaXMgbm93IGEgcG9pbnRlci4KKiBGaWVsZHMgYG9wZW5hcGkzLlNjaGVtYS5BZGRpdGlvbmFsUHJvcGVydGllc2AgYW5kIGBvcGVuYXBpMy5TY2hlbWEuQWRkaXRpb25hbFByb3BlcnRpZXNBbGxvd2VkYCBhcmUgcmVwbGFjZWQgYnkgYG9wZW5hcGkzLlNjaGVtYS5BZGRpdGlvbmFsUHJvcGVydGllcy5TY2hlbWFgIGFuZCBgb3BlbmFwaTMuU2NoZW1hLkFkZGl0aW9uYWxQcm9wZXJ0aWVzLkhhc2AgcmVzcGVjdGl2ZWx5LgoqIFR5cGUgYG9wZW5hcGkzLkV4dGVuc2lvblByb3BzYCBpcyBub3cganVzdCBgbWFwW3N0cmluZ11hbnlgIGFuZCBleHRlbnNpb25zIGFyZSBhY2Nlc3NpYmxlIHRocm91Z2ggdGhlIGBFeHRlbnNpb25zYCBmaWVsZC4KCiMjIyB2MC4xMTIuMAoqIGAob3BlbmFwaTMuVmFsaWRhdGlvbk9wdGlvbnMpLkV4YW1wbGVzVmFsaWRhdGlvbkRpc2FibGVkYCBoYXMgYmVlbiB1bmV4cG9ydGVkLgoqIGAob3BlbmFwaTMuVmFsaWRhdGlvbk9wdGlvbnMpLlNjaGVtYUZvcm1hdFZhbGlkYXRpb25FbmFibGVkYCBoYXMgYmVlbiB1bmV4cG9ydGVkLgoqIGAob3BlbmFwaTMuVmFsaWRhdGlvbk9wdGlvbnMpLlNjaGVtYVBhdHRlcm5WYWxpZGF0aW9uRGlzYWJsZWRgIGhhcyBiZWVuIHVuZXhwb3J0ZWQuCgojIyMgdjAuMTExLjAKKiBDaGFuZ2VkIGBmdW5jICgqXykgVmFsaWRhdGUoY3R4IGNvbnRleHQuQ29udGV4dCkgZXJyb3JgIHRvIGBmdW5jICgqXykgVmFsaWRhdGUoY3R4IGNvbnRleHQuQ29udGV4dCwgb3B0cyAuLi5WYWxpZGF0aW9uT3B0aW9uKSBlcnJvcmAuCiogYG9wZW5hcGkzLldpdGhWYWxpZGF0aW9uT3B0aW9ucyhjdHggY29udGV4dC5Db250ZXh0LCBvcHRzICpWYWxpZGF0aW9uT3B0aW9ucykgY29udGV4dC5Db250ZXh0YCBwcm90b3R5cGUgY2hhbmdlZCB0byBgb3BlbmFwaTMuV2l0aFZhbGlkYXRpb25PcHRpb25zKGN0eCBjb250ZXh0LkNvbnRleHQsIG9wdHMgLi4uVmFsaWRhdGlvbk9wdGlvbikgY29udGV4dC5Db250ZXh0YC4KCiMjIyB2MC4xMDEuMAoqIGBvcGVuYXBpMy5TY2hlbWFGb3JtYXRWYWxpZGF0aW9uRGlzYWJsZWRgIGhhcyBiZWVuIHJlbW92ZWQgaW4gZmF2b3VyIG9mIGFuIG9wdGlvbiBgb3BlbmFwaTMuRW5hYmxlU2NoZW1hRm9ybWF0VmFsaWRhdGlvbigpYCBwYXNzZWQgdG8gYG9wZW5hcGkzLlQuVmFsaWRhdGVgLiBUaGUgZGVmYXVsdCBiZWhhdmlvdXIgaXMgYWxzbyBub3cgdG8gbm90IHZhbGlkYXRlIGZvcm1hdHMsIGFzIHRoZSBPcGVuQVBJIHNwZWMgbWVudGlvbnMgdGhlIGBmb3JtYXRgIGlzIGFuIG9wZW4gdmFsdWUuCgojIyMgdjAuODQuMAoqIFRoZSBwcm90b3R5cGUgb2YgYG9wZW5hcGkzZ2VuLk5ld1NjaGVtYVJlZkZvclZhbHVlYCBjaGFuZ2VkOgoJKiBJdCBubyBsb25nZXIgcmV0dXJucyBhIG1hcCBidXQgdGhhdCBpcyBzdGlsbCBhY2Nlc3NpYmxlIHVuZGVyIHRoZSBmaWVsZCBgKCpHZW5lcmF0b3IpLlNjaGVtYVJlZnNgLgoJKiBJdCBub3cgdGFrZXMgaW4gYW4gYWRkaXRpb25hbCBhcmd1bWVudCAoYmFzaWNhbGx5IGBkb2MuQ29tcG9uZW50cy5TY2hlbWFzYCkgd2hpY2ggZ2V0cyB3cml0dGVuIHRvIHNvIGAkcmVmYCBjeWNsZXMgY2FuIGJlIHByb3Blcmx5IGhhbmRsZWQuCgojIyMgdjAuNjEuMAoqIFJlbmFtZWQgYG9wZW5hcGkyLlN3YWdnZXJgIHRvIGBvcGVuYXBpMi5UYC4KKiBSZW5hbWVkIGBvcGVuYXBpMmNvbnYuRnJvbVYzU3dhZ2dlcmAgdG8gYG9wZW5hcGkyY29udi5Gcm9tVjNgLgoqIFJlbmFtZWQgYG9wZW5hcGkyY29udi5Ub1YzU3dhZ2dlcmAgdG8gYG9wZW5hcGkyY29udi5Ub1YzYC4KKiBSZW5hbWVkIGBvcGVuYXBpMy5Mb2FkU3dhZ2dlckZyb21EYXRhYCB0byBgb3BlbmFwaTMuTG9hZEZyb21EYXRhYC4KKiBSZW5hbWVkIGBvcGVuYXBpMy5Mb2FkU3dhZ2dlckZyb21EYXRhV2l0aFBhdGhgIHRvIGBvcGVuYXBpMy5Mb2FkRnJvbURhdGFXaXRoUGF0aGAuCiogUmVuYW1lZCBgb3BlbmFwaTMuTG9hZFN3YWdnZXJGcm9tRmlsZWAgdG8gYG9wZW5hcGkzLkxvYWRGcm9tRmlsZWAuCiogUmVuYW1lZCBgb3BlbmFwaTMuTG9hZFN3YWdnZXJGcm9tVVJJYCB0byBgb3BlbmFwaTMuTG9hZEZyb21VUklgLgoqIFJlbmFtZWQgYG9wZW5hcGkzLk5ld1N3YWdnZXJMb2FkZXJgIHRvIGBvcGVuYXBpMy5OZXdMb2FkZXJgLgoqIFJlbmFtZWQgYG9wZW5hcGkzLlN3YWdnZXJgIHRvIGBvcGVuYXBpMy5UYC4KKiBSZW5hbWVkIGBvcGVuYXBpMy5Td2FnZ2VyTG9hZGVyYCB0byBgb3BlbmFwaTMuTG9hZGVyYC4KKiBSZW5hbWVkIGBvcGVuYXBpM2ZpbHRlci5WYWxpZGF0aW9uSGFuZGxlci5Td2FnZ2VyRmlsZWAgdG8gYG9wZW5hcGkzZmlsdGVyLlZhbGlkYXRpb25IYW5kbGVyLkZpbGVgLgoqIFJlbmFtZWQgYHJvdXRlcnMuUm91dGUuU3dhZ2dlcmAgdG8gYHJvdXRlcnMuUm91dGUuU3BlY2AuCgojIyMgdjAuNTEuMAoqIFR5cGUgYG9wZW5hcGkzZmlsdGVyLlJvdXRlYCBtb3ZlZCB0byBgcm91dGVyc2AgKGFuZCBgUm91dGUuSGFuZGxlcmAgd2FzIGRyb3BwZWQuIFNlZSBodHRwczovL2dpdGh1Yi5jb20vZ2V0a2luL2tpbi1vcGVuYXBpL2lzc3Vlcy8zMjkpCiogVHlwZSBgb3BlbmFwaTNmaWx0ZXIuUm91dGVFcnJvcmAgbW92ZWQgdG8gYHJvdXRlcnNgIChzbyBkaWQgYEVyclBhdGhOb3RGb3VuZGAgYW5kIGBFcnJNZXRob2ROb3RBbGxvd2VkYCB3aGljaCBhcmUgbm93IGBSb3V0ZUVycm9yYHMpCiogUm91dGVycycgYEZpbmRSb3V0ZSguLi4pYCBtZXRob2Qgbm93IHRha2VzIG9ubHkgb25lIGFyZ3VtZW50OiBgKmh0dHAuUmVxdWVzdGAKKiBgZ2V0a2luL2tpbi1vcGVuYXBpL29wZW5hcGkzZmlsdGVyLlJvdXRlcmAgbW92ZWQgdG8gYGdldGtpbi9raW4tb3BlbmFwaS9yb3V0ZXJzL2xlZ2FjeWAKKiBgb3BlbmFwaTNmaWx0ZXIuTmV3Um91dGVyKClgIGFuZCBpdHMgcmVsYXRlZCBgV2l0aFN3YWdnZXJGcm9tRmlsZShzdHJpbmcpYCwgYFdpdGhTd2FnZ2VyKCpvcGVuYXBpMy5Td2FnZ2VyKWAsIGBBZGRTd2FnZ2VyRnJvbUZpbGUoc3RyaW5nKWAgYW5kIGBBZGRTd2FnZ2VyKCpvcGVuYXBpMy5Td2FnZ2VyKWAgYXJlIGFsbCByZXBsYWNlZCB3aXRoIGEgc2luZ2xlIGA8cm91dGVyIHBhY2thZ2U+Lk5ld1JvdXRlcigqb3BlbmFwaTMuU3dhZ2dlcilgCgkqIE5PVEU6IHRoZSBgTmV3Um91dGVyKGRvYylgIGNhbGwgbm93IHJlcXVpcmVzIHRoYXQgdGhlIHVzZXIgZW5zdXJlcyBgZG9jYCBpcyB2YWxpZCAoYGRvYy5WYWxpZGF0ZSgpICE9IG5pbGApLiBUaGlzIHVzZWQgdG8gYmUgYXNzZXJ0ZWQuCgojIyMgdjAuNDcuMApGaWVsZCBgKCpvcGVuYXBpMy5Td2FnZ2VyTG9hZGVyKS5Mb2FkU3dhZ2dlckZyb21VUklGdW5jYCBvZiB0eXBlIGBmdW5jKCpvcGVuYXBpMy5Td2FnZ2VyTG9hZGVyLCAqdXJsLlVSTCkgKCpvcGVuYXBpMy5Td2FnZ2VyLCBlcnJvcilgIHdhcyByZW1vdmVkIGFmdGVyIHRoZSBhZGRpdGlvbiBvZiB0aGUgZmllbGQgYCgqb3BlbmFwaTMuU3dhZ2dlckxvYWRlcikuUmVhZEZyb21VUklGdW5jYCBvZiB0eXBlIGBmdW5jKCpvcGVuYXBpMy5Td2FnZ2VyTG9hZGVyLCAqdXJsLlVSTCkgKFtdYnl0ZSwgZXJyb3IpYC4K
- readmeEtag: '"0709ae7c505f219ee4406ad1bfa19877a348bcb0"'
- readmeLastModified: Fri, 02 Aug 2024 16:02:53 GMT
+ WyFbQ0ldKGh0dHBzOi8vZ2l0aHViLmNvbS9nZXRraW4va2luLW9wZW5hcGkvd29ya2Zsb3dzL2dvL2JhZGdlLnN2ZyldKGh0dHBzOi8vZ2l0aHViLmNvbS9nZXRraW4va2luLW9wZW5hcGkvYWN0aW9ucykKWyFbR28gUmVwb3J0IENhcmRdKGh0dHBzOi8vZ29yZXBvcnRjYXJkLmNvbS9iYWRnZS9naXRodWIuY29tL2dldGtpbi9raW4tb3BlbmFwaSldKGh0dHBzOi8vZ29yZXBvcnRjYXJkLmNvbS9yZXBvcnQvZ2l0aHViLmNvbS9nZXRraW4va2luLW9wZW5hcGkpClshW0dvRG9jXShodHRwczovL2dvZG9jLm9yZy9naXRodWIuY29tL2dldGtpbi9raW4tb3BlbmFwaT9zdGF0dXMuc3ZnKV0oaHR0cHM6Ly9nb2RvYy5vcmcvZ2l0aHViLmNvbS9nZXRraW4va2luLW9wZW5hcGkpClshW0pvaW4gR2l0dGVyIENoYXQgQ2hhbm5lbCAtXShodHRwczovL2JhZGdlcy5naXR0ZXIuaW0vZ2V0a2luL2tpbi5zdmcpXShodHRwczovL2dpdHRlci5pbS9nZXRraW4va2luP3V0bV9zb3VyY2U9YmFkZ2UmdXRtX21lZGl1bT1iYWRnZSZ1dG1fY2FtcGFpZ249cHItYmFkZ2UmdXRtX2NvbnRlbnQ9YmFkZ2UpCgojIEludHJvZHVjdGlvbgpBIFtHb10oaHR0cHM6Ly9nb2xhbmcub3JnKSBwcm9qZWN0IGZvciBoYW5kbGluZyBbT3BlbkFQSV0oaHR0cHM6Ly93d3cub3BlbmFwaXMub3JnLykgZmlsZXMuIFdlIHRhcmdldDoKKiBbT3BlbkFQSSBgdjIuMGBdKGh0dHBzOi8vZ2l0aHViLmNvbS9PQUkvT3BlbkFQSS1TcGVjaWZpY2F0aW9uL2Jsb2IvbWFpbi92ZXJzaW9ucy8yLjAubWQpIChmb3JtZXJseSBrbm93biBhcyBTd2FnZ2VyKQoqIFtPcGVuQVBJIGB2My4wYF0oaHR0cHM6Ly9naXRodWIuY29tL09BSS9PcGVuQVBJLVNwZWNpZmljYXRpb24vYmxvYi9tYWluL3ZlcnNpb25zLzMuMC4zLm1kKQoqIFtPcGVuQVBJIGB2My4xYF0oaHR0cHM6Ly9naXRodWIuY29tL09BSS9PcGVuQVBJLVNwZWNpZmljYXRpb24vYmxvYi9tYWluL3ZlcnNpb25zLzMuMS4wLm1kKSBTb29uISBbVHJhY2tpbmcgaXNzdWUgaGVyZS5dKGh0dHBzOi8vZ2l0aHViLmNvbS9nZXRraW4va2luLW9wZW5hcGkvaXNzdWVzLzIzMCkKCkxpY2Vuc2VkIHVuZGVyIHRoZSBbTUlUIExpY2Vuc2VdKC4vTElDRU5TRSkuCgojIyBDb250cmlidXRvcnMsIHVzZXJzIGFuZCBzcG9uc29ycwpUaGUgcHJvamVjdCBoYXMgcmVjZWl2ZWQgcHVsbCByZXF1ZXN0cyBbZnJvbSBtYW55IHBlb3BsZV0oaHR0cHM6Ly9naXRodWIuY29tL2dldGtpbi9raW4tb3BlbmFwaS9ncmFwaHMvY29udHJpYnV0b3JzKS4gVGhhbmtzIHRvIGV2ZXJ5b25lIQoKUGxlYXNlLCBbZ2l2ZSBiYWNrIHRvIHRoaXMgcHJvamVjdF0oaHR0cHM6Ly9naXRodWIuY29tL3Nwb25zb3JzL2Zlbm9sbHApIGJ5IGJlY29taW5nIGEgc3BvbnNvci4KCkhlcmUncyBzb21lIHByb2plY3RzIHRoYXQgZGVwZW5kIG9uIF9raW4tb3BlbmFwaV86CiAgKiBbZ2l0aHViLmNvbS9hLWgvcmVzdF0oaHR0cHM6Ly9naXRodWIuY29tL2EtaC9yZXN0KSAtICJHZW5lcmF0ZSBPcGVuQVBJIDMuMCBzcGVjaWZpY2F0aW9ucyBmcm9tIEdvIGNvZGUgd2l0aG91dCBhbm5vdGF0aW9ucyBvciBtYWdpYyBjb21tZW50cyIKICAqIFtnaXRodWIuY29tL1R1ZmluL29hc2RpZmZdKGh0dHBzOi8vZ2l0aHViLmNvbS9UdWZpbi9vYXNkaWZmKSAtICJBIGRpZmYgdG9vbCBmb3IgT3BlbkFQSSBTcGVjaWZpY2F0aW9uIDMiCiAgKiBbZ2l0aHViLmNvbS9kYW5pZWxndGF5bG9yL2FwaXNwcm91dF0oaHR0cHM6Ly9naXRodWIuY29tL2RhbmllbGd0YXlsb3IvYXBpc3Byb3V0KSAtICJMaWdodHdlaWdodCwgYmxhemluZyBmYXN0LCBjcm9zcy1wbGF0Zm9ybSBPcGVuQVBJIDMgbW9jayBzZXJ2ZXIgd2l0aCB2YWxpZGF0aW9uIgogICogW2dpdGh1Yi5jb20vZGVlcG1hcC9vYXBpLWNvZGVnZW5dKGh0dHBzOi8vZ2l0aHViLmNvbS9kZWVwbWFwL29hcGktY29kZWdlbikgLSAiR2VuZXJhdGUgR28gY2xpZW50IGFuZCBzZXJ2ZXIgYm9pbGVycGxhdGUgZnJvbSBPcGVuQVBJIDMgc3BlY2lmaWNhdGlvbnMiCiAgKiBbZ2l0aHViLmNvbS9kdW5nbGFzL3Z1bGNhaW5dKGh0dHBzOi8vZ2l0aHViLmNvbS9kdW5nbGFzL3Z1bGNhaW4pIC0gIlVzZSBIVFRQLzIgU2VydmVyIFB1c2ggdG8gY3JlYXRlIGZhc3QgYW5kIGlkaW9tYXRpYyBjbGllbnQtZHJpdmVuIFJFU1QgQVBJcyIKICAqIFtnaXRodWIuY29tL2RhbmllbGd0YXlsb3IvcmVzdGlzaF0oaHR0cHM6Ly9naXRodWIuY29tL2RhbmllbGd0YXlsb3IvcmVzdGlzaCkgLSAiLi4uYSBDTEkgZm9yIGludGVyYWN0aW5nIHdpdGggUkVTVC1pc2ggSFRUUCBBUElzIHdpdGggc29tZSBuaWNlIGZlYXR1cmVzIGJ1aWx0LWluIgogICogW2dpdGh1Yi5jb20vZ29hZGVzaWduL2dvYV0oaHR0cHM6Ly9naXRodWIuY29tL2dvYWRlc2lnbi9nb2EpIC0gIkRlc2lnbi1iYXNlZCBBUElzIGFuZCBtaWNyb3NlcnZpY2VzIGluIEdvIgogICogW2dpdGh1Yi5jb20vaGFzaGljb3JwL25vbWFkLW9wZW5hcGldKGh0dHBzOi8vZ2l0aHViLmNvbS9oYXNoaWNvcnAvbm9tYWQtb3BlbmFwaSkgLSAiTm9tYWQgaXMgYW4gZWFzeS10by11c2UsIGZsZXhpYmxlLCBhbmQgcGVyZm9ybWFudCB3b3JrbG9hZCBvcmNoZXN0cmF0b3IgdGhhdCBjYW4gZGVwbG95IGEgbWl4IG9mIG1pY3Jvc2VydmljZSwgYmF0Y2gsIGNvbnRhaW5lcml6ZWQsIGFuZCBub24tY29udGFpbmVyaXplZCBhcHBsaWNhdGlvbnMuIE5vbWFkIGlzIGVhc3kgdG8gb3BlcmF0ZSBhbmQgc2NhbGUgYW5kIGhhcyBuYXRpdmUgQ29uc3VsIGFuZCBWYXVsdCBpbnRlZ3JhdGlvbnMuIgogICogW2dpdGxhYi5jb20vamFtaWV0YW5uYS9odHRwdGVzdC1vcGVuYXBpXShodHRwczovL2dpdGxhYi5jb20vamFtaWV0YW5uYS9odHRwdGVzdC1vcGVuYXBpKSAoWypibG9nIHBvc3QqXShodHRwczovL3d3dy5qdnQubWUvcG9zdHMvMjAyMi8wNS8yMi9nby1vcGVuYXBpLWNvbnRyYWN0LXRlc3QvKSkgLSAiR28gT3BlbkFQSSBDb250cmFjdCBWZXJpZmljYXRpb24gZm9yIHVzZSB3aXRoIGBuZXQvaHR0cGAiCiAgKiBbZ2l0aHViLmNvbS9TSU1JVEdST1VQL29wZW5hcGlnZW5lcmF0b3JdKGh0dHBzOi8vZ2l0aHViLmNvbS9TSU1JVEdST1VQL29wZW5hcGlnZW5lcmF0b3IpIC0gIk9wZW5hcGkgdjMgbWljcm9zZXJ2aWNlcyBnZW5lcmF0b3IiCiAgKiBbaHR0cHM6Ly9naXRodWIuY29tL3Byb2plY3RzdmVsdG9zL2FkZG9uLWNvbnRyb2xsZXJdKGh0dHBzOi8vZ2l0aHViLmNvbS9wcm9qZWN0c3ZlbHRvcy9hZGRvbi1jb250cm9sbGVyKSAtICJLdWJlcm5ldGVzIGFkZC1vbiBjb250cm9sbGVyIGRlc2lnbmVkIHRvIG1hbmFnZSB0ZW5zIG9mIGNsdXN0ZXJzLiIKICAqIChGZWVsIGZyZWUgdG8gYWRkIHlvdXIgcHJvamVjdCBieSBbY3JlYXRpbmcgYW4gaXNzdWVdKGh0dHBzOi8vZ2l0aHViLmNvbS9nZXRraW4va2luLW9wZW5hcGkvaXNzdWVzL25ldykgb3IgYSBwdWxsIHJlcXVlc3QpCgojIyBBbHRlcm5hdGl2ZXMKKiBbbGlib3BlbmFwaV0oaHR0cHM6Ly9naXRodWIuY29tL3BiMzNmL2xpYm9wZW5hcGkpIGEgZnVsbHkgZmVhdHVyZWQsIGhpZ2ggcGVyZm9ybWFuY2UgT3BlbkFQSSAzLjEsIDMuMCBhbmQgU3dhZ2dlciBwYXJzZXIsIGxpYnJhcnksIHZhbGlkYXRvciBhbmQgdG9vbGtpdAoqIFtnby1zd2FnZ2VyXShodHRwczovL2dpdGh1Yi5jb20vZ28tc3dhZ2dlci9nby1zd2FnZ2VyKSBzdGF0ZWQgWypPcGVuQVBJdjMgd29uJ3QgYmUgc3VwcG9ydGVkKl0oaHR0cHM6Ly9naXRodWIuY29tL2dvLXN3YWdnZXIvZ28tc3dhZ2dlci9pc3N1ZXMvMTEyMiNpc3N1ZWNvbW1lbnQtNTc1OTY4NDk5KQoqIFtzd2FnZ29dKGh0dHBzOi8vZ2l0aHViLmNvbS9zd2FnZ28vc3dhZykgaGFzIGFuIFtvcGVuIGlzc3VlIG9uIE9wZW5BUEl2M10oaHR0cHM6Ly9naXRodWIuY29tL3N3YWdnby9zd2FnL2lzc3Vlcy8zODYpCiogW2dvLW9wZW5hcGldKGh0dHBzOi8vZ2l0aHViLmNvbS9nby1vcGVuYXBpKSdzIFtzcGVjM10oaHR0cHM6Ly9naXRodWIuY29tL2dvLW9wZW5hcGkvc3BlYzMpCgkqIGFuIGl0ZXJhdGlvbiBvbiBbc3BlY10oaHR0cHM6Ly9naXRodWIuY29tL2dvLW9wZW5hcGkvc3BlYykgKGZvciBPcGVuQVBJdjIpCgkqIHNlZSBbUkVBRE1FXShodHRwczovL2dpdGh1Yi5jb20vZ28tb3BlbmFwaS9zcGVjMy90cmVlLzNmYWI5ZmFhOTA5NGUwNmViZDE5ZGVkN2VhOTZkMTU2YzIyODNkY2Ejb2FpLW9iamVjdC1tb2RlbC0tLSkgZm9yIHRoZSBtaXNzaW5nIHBhcnRzCgpCZSBzdXJlIHRvIGNoZWNrIFtPcGVuQVBJIEluaXRpYXRpdmVdKGh0dHBzOi8vZ2l0aHViLmNvbS9PQUkpJ3MgW2dyZWF0IHRvb2xpbmcgbGlzdF0oaHR0cHM6Ly9naXRodWIuY29tL09BSS9PcGVuQVBJLVNwZWNpZmljYXRpb24vYmxvYi9tYXN0ZXIvSU1QTEVNRU5UQVRJT05TLm1kKSBhcyB3ZWxsIGFzIFtPcGVuQVBJLlRvb2xzXShodHRwczovL29wZW5hcGkudG9vbHMvKS4KCiMgU3RydWN0dXJlCiAgKiBfb3BlbmFwaTJfIChbZ29kb2NdKGh0dHBzOi8vZ29kb2Mub3JnL2dpdGh1Yi5jb20vZ2V0a2luL2tpbi1vcGVuYXBpL29wZW5hcGkyKSkKICAgICogU3VwcG9ydCBmb3IgT3BlbkFQSSAyIGZpbGVzLCBpbmNsdWRpbmcgc2VyaWFsaXphdGlvbiwgZGVzZXJpYWxpemF0aW9uLCBhbmQgdmFsaWRhdGlvbi4KICAqIF9vcGVuYXBpMmNvbnZfIChbZ29kb2NdKGh0dHBzOi8vZ29kb2Mub3JnL2dpdGh1Yi5jb20vZ2V0a2luL2tpbi1vcGVuYXBpL29wZW5hcGkyY29udikpCiAgICAqIENvbnZlcnRzIE9wZW5BUEkgMiBmaWxlcyBpbnRvIE9wZW5BUEkgMyBmaWxlcy4KICAqIF9vcGVuYXBpM18gKFtnb2RvY10oaHR0cHM6Ly9nb2RvYy5vcmcvZ2l0aHViLmNvbS9nZXRraW4va2luLW9wZW5hcGkvb3BlbmFwaTMpKQogICAgKiBTdXBwb3J0IGZvciBPcGVuQVBJIDMgZmlsZXMsIGluY2x1ZGluZyBzZXJpYWxpemF0aW9uLCBkZXNlcmlhbGl6YXRpb24sIGFuZCB2YWxpZGF0aW9uLgogICogX29wZW5hcGkzZmlsdGVyXyAoW2dvZG9jXShodHRwczovL2dvZG9jLm9yZy9naXRodWIuY29tL2dldGtpbi9raW4tb3BlbmFwaS9vcGVuYXBpM2ZpbHRlcikpCiAgICAqIFZhbGlkYXRlcyBIVFRQIHJlcXVlc3RzIGFuZCByZXNwb25zZXMKICAgICogUHJvdmlkZXMgYSBbZ29yaWxsYS9tdXhdKGh0dHBzOi8vZ2l0aHViLmNvbS9nb3JpbGxhL211eCkgcm91dGVyIGZvciBPcGVuQVBJIG9wZXJhdGlvbnMKICAqIF9vcGVuYXBpM2dlbl8gKFtnb2RvY10oaHR0cHM6Ly9nb2RvYy5vcmcvZ2l0aHViLmNvbS9nZXRraW4va2luLW9wZW5hcGkvb3BlbmFwaTNnZW4pKQogICAgKiBHZW5lcmF0ZXMgYCpvcGVuYXBpMy5TY2hlbWFgIHZhbHVlcyBmb3IgR28gdHlwZXMuCgojIFNvbWUgcmVjaXBlcwojIyBWYWxpZGF0aW5nIGFuIE9wZW5BUEkgZG9jdW1lbnQKYGBgc2hlbGwKZ28gcnVuIGdpdGh1Yi5jb20vZ2V0a2luL2tpbi1vcGVuYXBpL2NtZC92YWxpZGF0ZUBsYXRlc3QgWy0tY2lyY3VsYXJdIFstLWRlZmF1bHRzXSBbLS1leGFtcGxlc10gWy0tZXh0XSBbLS1wYXR0ZXJuc10gLS0gPGxvY2FsIFlBTUwgb3IgSlNPTiBmaWxlPgpgYGAKCiMjIExvYWRpbmcgT3BlbkFQSSBkb2N1bWVudApVc2UgYG9wZW5hcGkzLkxvYWRlcmAsIHdoaWNoIHJlc29sdmVzIGFsbCByZWZlcmVuY2VzOgpgYGBnbwpsb2FkZXIgOj0gb3BlbmFwaTMuTmV3TG9hZGVyKCkKZG9jLCBlcnIgOj0gbG9hZGVyLkxvYWRGcm9tRmlsZSgibXktb3BlbmFwaS1zcGVjLmpzb24iKQpgYGAKCiMjIEdldHRpbmcgT3BlbkFQSSBvcGVyYXRpb24gdGhhdCBtYXRjaGVzIHJlcXVlc3QKYGBgZ28KbG9hZGVyIDo9IG9wZW5hcGkzLk5ld0xvYWRlcigpCmRvYywgXyA6PSBsb2FkZXIuTG9hZEZyb21EYXRhKFtdYnl0ZShgLi4uYCkpCl8gPSBkb2MuVmFsaWRhdGUobG9hZGVyLkNvbnRleHQpCnJvdXRlciwgXyA6PSBnb3JpbGxhbXV4Lk5ld1JvdXRlcihkb2MpCnJvdXRlLCBwYXRoUGFyYW1zLCBfIDo9IHJvdXRlci5GaW5kUm91dGUoaHR0cFJlcXVlc3QpCi8vIERvIHNvbWV0aGluZyB3aXRoIHJvdXRlLk9wZXJhdGlvbgpgYGAKCiMjIFZhbGlkYXRpbmcgSFRUUCByZXF1ZXN0cy9yZXNwb25zZXMKYGBgZ28KcGFja2FnZSBtYWluCgppbXBvcnQgKAoJImNvbnRleHQiCgkiZm10IgoJIm5ldC9odHRwIgoKCSJnaXRodWIuY29tL2dldGtpbi9raW4tb3BlbmFwaS9vcGVuYXBpMyIKCSJnaXRodWIuY29tL2dldGtpbi9raW4tb3BlbmFwaS9vcGVuYXBpM2ZpbHRlciIKCSJnaXRodWIuY29tL2dldGtpbi9raW4tb3BlbmFwaS9yb3V0ZXJzL2dvcmlsbGFtdXgiCikKCmZ1bmMgbWFpbigpIHsKCWN0eCA6PSBjb250ZXh0LkJhY2tncm91bmQoKQoJbG9hZGVyIDo9ICZvcGVuYXBpMy5Mb2FkZXJ7Q29udGV4dDogY3R4LCBJc0V4dGVybmFsUmVmc0FsbG93ZWQ6IHRydWV9Cglkb2MsIF8gOj0gbG9hZGVyLkxvYWRGcm9tRmlsZSgiLi4uL015LU9wZW5BUEl2My1BUEkueW1sIikKCS8vIFZhbGlkYXRlIGRvY3VtZW50CglfID0gZG9jLlZhbGlkYXRlKGN0eCkKCXJvdXRlciwgXyA6PSBnb3JpbGxhbXV4Lk5ld1JvdXRlcihkb2MpCglodHRwUmVxLCBfIDo9IGh0dHAuTmV3UmVxdWVzdChodHRwLk1ldGhvZEdldCwgIi9pdGVtcyIsIG5pbCkKCgkvLyBGaW5kIHJvdXRlCglyb3V0ZSwgcGF0aFBhcmFtcywgXyA6PSByb3V0ZXIuRmluZFJvdXRlKGh0dHBSZXEpCgoJLy8gVmFsaWRhdGUgcmVxdWVzdAoJcmVxdWVzdFZhbGlkYXRpb25JbnB1dCA6PSAmb3BlbmFwaTNmaWx0ZXIuUmVxdWVzdFZhbGlkYXRpb25JbnB1dHsKCQlSZXF1ZXN0OiAgICBodHRwUmVxLAoJCVBhdGhQYXJhbXM6IHBhdGhQYXJhbXMsCgkJUm91dGU6ICAgICAgcm91dGUsCgl9CglfID0gb3BlbmFwaTNmaWx0ZXIuVmFsaWRhdGVSZXF1ZXN0KGN0eCwgcmVxdWVzdFZhbGlkYXRpb25JbnB1dCkKCgkvLyBIYW5kbGUgdGhhdCByZXF1ZXN0CgkvLyAtLT4gWU9VUiBDT0RFIEdPRVMgSEVSRSA8LS0KCXJlc3BvbnNlSGVhZGVycyA6PSBodHRwLkhlYWRlcnsiQ29udGVudC1UeXBlIjogW11zdHJpbmd7ImFwcGxpY2F0aW9uL2pzb24ifX0KCXJlc3BvbnNlQ29kZSA6PSAyMDAKCXJlc3BvbnNlQm9keSA6PSBbXWJ5dGUoYHt9YCkKCgkvLyBWYWxpZGF0ZSByZXNwb25zZQoJcmVzcG9uc2VWYWxpZGF0aW9uSW5wdXQgOj0gJm9wZW5hcGkzZmlsdGVyLlJlc3BvbnNlVmFsaWRhdGlvbklucHV0ewoJCVJlcXVlc3RWYWxpZGF0aW9uSW5wdXQ6IHJlcXVlc3RWYWxpZGF0aW9uSW5wdXQsCgkJU3RhdHVzOiAgICAgICAgICAgICAgICAgcmVzcG9uc2VDb2RlLAoJCUhlYWRlcjogICAgICAgICAgICAgICAgIHJlc3BvbnNlSGVhZGVycywKCX0KCXJlc3BvbnNlVmFsaWRhdGlvbklucHV0LlNldEJvZHlCeXRlcyhyZXNwb25zZUJvZHkpCglfID0gb3BlbmFwaTNmaWx0ZXIuVmFsaWRhdGVSZXNwb25zZShjdHgsIHJlc3BvbnNlVmFsaWRhdGlvbklucHV0KQp9CmBgYAoKIyMgQ3VzdG9tIGNvbnRlbnQgdHlwZSBmb3IgYm9keSBvZiBIVFRQIHJlcXVlc3QvcmVzcG9uc2UKCkJ5IGRlZmF1bHQsIHRoZSBsaWJyYXJ5IHBhcnNlcyBhIGJvZHkgb2YgdGhlIEhUVFAgcmVxdWVzdCBhbmQgcmVzcG9uc2UKaWYgaXQgaGFzIG9uZSBvZiB0aGUgZm9sbG93aW5nIGNvbnRlbnQgdHlwZXM6IGAidGV4dC9wbGFpbiJgIG9yIGAiYXBwbGljYXRpb24vanNvbiJgLgpUbyBzdXBwb3J0IG90aGVyIGNvbnRlbnQgdHlwZXMgeW91IG11c3QgcmVnaXN0ZXIgZGVjb2RlcnMgZm9yIHRoZW06CgpgYGBnbwpmdW5jIG1haW4oKSB7CgkvLyAuLi4KCgkvLyBSZWdpc3RlciBhIGJvZHkncyBkZWNvZGVyIGZvciBjb250ZW50IHR5cGUgImFwcGxpY2F0aW9uL3htbCIuCglvcGVuYXBpM2ZpbHRlci5SZWdpc3RlckJvZHlEZWNvZGVyKCJhcHBsaWNhdGlvbi94bWwiLCB4bWxCb2R5RGVjb2RlcikKCgkvLyBOb3cgeW91IGNhbiB2YWxpZGF0ZSBIVFRQIHJlcXVlc3QgdGhhdCBjb250YWlucyBhIGJvZHkgd2l0aCBjb250ZW50IHR5cGUgImFwcGxpY2F0aW9uL3htbCIuCglyZXF1ZXN0VmFsaWRhdGlvbklucHV0IDo9ICZvcGVuYXBpM2ZpbHRlci5SZXF1ZXN0VmFsaWRhdGlvbklucHV0ewoJCVJlcXVlc3Q6ICAgIGh0dHBSZXEsCgkJUGF0aFBhcmFtczogcGF0aFBhcmFtcywKCQlSb3V0ZTogICAgICByb3V0ZSwKCX0KCWlmIGVyciA6PSBvcGVuYXBpM2ZpbHRlci5WYWxpZGF0ZVJlcXVlc3QoY3R4LCByZXF1ZXN0VmFsaWRhdGlvbklucHV0KTsgZXJyICE9IG5pbCB7CgkJcGFuaWMoZXJyKQoJfQoKCS8vIC4uLgoKCS8vIEFuZCB5b3UgY2FuIHZhbGlkYXRlIEhUVFAgcmVzcG9uc2UgdGhhdCBjb250YWlucyBhIGJvZHkgd2l0aCBjb250ZW50IHR5cGUgImFwcGxpY2F0aW9uL3htbCIuCglpZiBlcnIgOj0gb3BlbmFwaTNmaWx0ZXIuVmFsaWRhdGVSZXNwb25zZShjdHgsIHJlc3BvbnNlVmFsaWRhdGlvbklucHV0KTsgZXJyICE9IG5pbCB7CgkJcGFuaWMoZXJyKQoJfQp9CgpmdW5jIHhtbEJvZHlEZWNvZGVyKGJvZHkgaW8uUmVhZGVyLCBoIGh0dHAuSGVhZGVyLCBzY2hlbWEgKm9wZW5hcGkzLlNjaGVtYVJlZiwgZW5jRm4gb3BlbmFwaTNmaWx0ZXIuRW5jb2RpbmdGbikgKGRlY29kZWQgYW55LCBlcnIgZXJyb3IpIHsKCS8vIERlY29kZSBib2R5IHRvIGEgcHJpbWl0aXZlLCBbXWFueSwgb3IgbWFwW3N0cmluZ11hbnkuCn0KYGBgCgojIyBDdXN0b20gZnVuY3Rpb24gdG8gY2hlY2sgdW5pcXVlbmVzcyBvZiBhcnJheSBpdGVtcwoKQnkgZGVmYXVsdCwgdGhlIGxpYnJhcnkgY2hlY2tzIHVuaXF1ZSBpdGVtcyB1c2luZyB0aGUgZm9sbG93aW5nIHByZWRlZmluZWQgZnVuY3Rpb246CgpgYGBnbwpmdW5jIGlzU2xpY2VPZlVuaXF1ZUl0ZW1zKHhzIFtdYW55KSBib29sIHsKCXMgOj0gbGVuKHhzKQoJbSA6PSBtYWtlKG1hcFtzdHJpbmddc3RydWN0e30sIHMpCglmb3IgXywgeCA6PSByYW5nZSB4cyB7CgkJa2V5LCBfIDo9IGpzb24uTWFyc2hhbCgmeCkKCQltW3N0cmluZyhrZXkpXSA9IHN0cnVjdHt9e30KCX0KCXJldHVybiBzID09IGxlbihtKQp9CmBgYAoKSW4gdGhlIHByZWRlZmluZWQgZnVuY3Rpb24gYGpzb24uTWFyc2hhbGAgaXMgdXNlZCB0byBnZW5lcmF0ZSBhIHN0cmluZyB0aGF0IGNhbgpiZSB1c2VkIGFzIGEgbWFwIGtleSB3aGljaCBpcyB0byBjaGVjayB0aGUgdW5pcXVlbmVzcyBvZiBhbiBhcnJheQp3aGVuIHRoZSBhcnJheSBpdGVtcyBhcmUgb2JqZWN0cyBvciBhcnJheXMuIFlvdSBjYW4gcmVnaXN0ZXIKeW91IG93biBmdW5jdGlvbiBhY2NvcmRpbmcgdG8geW91ciBpbnB1dCBkYXRhIHRvIGdldCBiZXR0ZXIgcGVyZm9ybWFuY2U6CgpgYGBnbwpmdW5jIG1haW4oKSB7CgkvLyAuLi4KCgkvLyBSZWdpc3RlciBhIGN1c3RvbWl6ZWQgZnVuY3Rpb24gdXNlZCB0byBjaGVjayB1bmlxdWVuZXNzIG9mIGFycmF5LgoJb3BlbmFwaTMuUmVnaXN0ZXJBcnJheVVuaXF1ZUl0ZW1zQ2hlY2tlcihhcnJheVVuaXF1ZUl0ZW1zQ2hlY2tlcikKCgkvLyAuLi4gb3RoZXIgdmFsaWRhdGUgY29kZXMKfQoKZnVuYyBhcnJheVVuaXF1ZUl0ZW1zQ2hlY2tlcihpdGVtcyBbXWFueSkgYm9vbCB7CgkvLyBDaGVjayB0aGUgdW5pcXVlbmVzcyBvZiB0aGUgaW5wdXQgc2xpY2UKfQpgYGAKCiMjIEN1c3RvbSBmdW5jdGlvbiB0byBjaGFuZ2Ugc2NoZW1hIGVycm9yIG1lc3NhZ2VzCgpCeSBkZWZhdWx0LCB0aGUgZXJyb3IgbWVzc2FnZSByZXR1cm5lZCB3aGVuIHZhbGlkYXRpbmcgYSB2YWx1ZSBpbmNsdWRlcyB0aGUgZXJyb3IgcmVhc29uLCB0aGUgc2NoZW1hLCBhbmQgdGhlIGlucHV0IHZhbHVlLgoKRm9yIGV4YW1wbGUsIGdpdmVuIHRoZSBmb2xsb3dpbmcgc2NoZW1hOgoKYGBganNvbgp7CiAgInR5cGUiOiAic3RyaW5nIiwKICAiYWxsT2YiOiBbCiAgICB7ICJwYXR0ZXJuIjogIltBLVpdIiB9LAogICAgeyAicGF0dGVybiI6ICJbYS16XSIgfSwKICAgIHsgInBhdHRlcm4iOiAiWzAtOV0iIH0sCiAgICB7ICJwYXR0ZXJuIjogIlshQCMkJV4mKigpXys9LT9+XSIgfQogIF0KfQpgYGAKClBhc3NpbmcgdGhlIGlucHV0IHZhbHVlIGAic2VjcmV0ImAgdG8gdGhpcyBzY2hlbWEgd2lsbCBwcm9kdWNlIHRoZSBmb2xsb3dpbmcgZXJyb3IgbWVzc2FnZToKCmBgYApzdHJpbmcgZG9lc24ndCBtYXRjaCB0aGUgcmVndWxhciBleHByZXNzaW9uICJbQS1aXSIKU2NoZW1hOgogIHsKICAgICJwYXR0ZXJuIjogIltBLVpdIgogIH0KClZhbHVlOgogICJzZWNyZXQiCmBgYAoKSW5jbHVkaW5nIHRoZSBvcmlnaW5hbCB2YWx1ZSBpbiB0aGUgZXJyb3IgbWVzc2FnZSBjYW4gYmUgaGVscGZ1bCBmb3IgZGVidWdnaW5nLCBidXQgaXQgbWF5IG5vdCBiZSBhcHByb3ByaWF0ZSBmb3Igc2Vuc2l0aXZlIGluZm9ybWF0aW9uIHN1Y2ggYXMgc2VjcmV0cy4KClRvIGRpc2FibGUgdGhlIGV4dHJhIGRldGFpbHMgaW4gdGhlIHNjaGVtYSBlcnJvciBtZXNzYWdlLCB5b3UgY2FuIHNldCB0aGUgYG9wZW5hcGkzLlNjaGVtYUVycm9yRGV0YWlsc0Rpc2FibGVkYCBvcHRpb24gdG8gYHRydWVgOgoKYGBgZ28KZnVuYyBtYWluKCkgewoJLy8gLi4uCgoJLy8gRGlzYWJsZSBzY2hlbWEgZXJyb3IgZGV0YWlsZWQgZXJyb3IgbWVzc2FnZXMKCW9wZW5hcGkzLlNjaGVtYUVycm9yRGV0YWlsc0Rpc2FibGVkID0gdHJ1ZQoKCS8vIC4uLiBvdGhlciB2YWxpZGF0ZSBjb2Rlcwp9CmBgYAoKVGhpcyB3aWxsIHNob3J0ZW4gdGhlIGVycm9yIG1lc3NhZ2UgdG8gcHJlc2VudCBvbmx5IHRoZSByZWFzb246CgpgYGAKc3RyaW5nIGRvZXNuJ3QgbWF0Y2ggdGhlIHJlZ3VsYXIgZXhwcmVzc2lvbiAiW0EtWl0iCmBgYAoKRm9yIG1vcmUgZmluZS1ncmFpbmVkIGNvbnRyb2wgb3ZlciB0aGUgZXJyb3IgbWVzc2FnZSwgeW91IGNhbiBwYXNzIGEgY3VzdG9tIGBvcGVuYXBpM2ZpbHRlci5PcHRpb25zYCBvYmplY3QgdG8gYG9wZW5hcGkzZmlsdGVyLlJlcXVlc3RWYWxpZGF0aW9uSW5wdXRgIHRoYXQgaW5jbHVkZXMgYSBgb3BlbmFwaTNmaWx0ZXIuQ3VzdG9tU2NoZW1hRXJyb3JGdW5jYC4KCmBgYGdvCmZ1bmMgdmFsaWRhdGlvbk9wdGlvbnMoKSAqb3BlbmFwaTNmaWx0ZXIuT3B0aW9ucyB7CglvcHRpb25zIDo9ICZvcGVuYXBpM2ZpbHRlci5PcHRpb25ze30KCW9wdGlvbnMuV2l0aEN1c3RvbVNjaGVtYUVycm9yRnVuYyhzYWZlRXJyb3JNZXNzYWdlKQoJcmV0dXJuIG9wdGlvbnMKfQoKZnVuYyBzYWZlRXJyb3JNZXNzYWdlKGVyciAqb3BlbmFwaTMuU2NoZW1hRXJyb3IpIHN0cmluZyB7CglyZXR1cm4gZXJyLlJlYXNvbgp9CmBgYAoKVGhpcyB3aWxsIGNoYW5nZSB0aGUgc2NoZW1hIHZhbGlkYXRpb24gZXJyb3JzIHRvIHJldHVybiBvbmx5IHRoZSBgUmVhc29uYCBmaWVsZCwgd2hpY2ggaXMgZ3VhcmFudGVlZCB0byBub3QgaW5jbHVkZSB0aGUgb3JpZ2luYWwgdmFsdWUuCgojIyBSZWNvbmNpbGluZyBjb21wb25lbnQgJHJlZiB0eXBlcwoKYFJlZmVyZW5jZXNDb21wb25lbnRJblJvb3REb2N1bWVudGAgaXMgYSB1c2VmdWwgaGVscGVyIGZ1bmN0aW9uIHRvIGNoZWNrIGlmIGEgY29tcG9uZW50IHJlZmVyZW5jZQpjb2luY2lkZXMgd2l0aCBhIHJlZmVyZW5jZSBpbiB0aGUgcm9vdCBkb2N1bWVudCdzIGNvbXBvbmVudCBvYmplY3RzIGZpeGVkIGZpZWxkcy4KClRoaXMgY2FuIGJlIHVzZWQgdG8gZGV0ZXJtaW5lIGlmIHR3byBzY2hlbWEgZGVmaW5pdGlvbnMgYXJlIG9mIHRoZSBzYW1lIHN0cnVjdHVyZSwgaGVscGZ1bCBmb3IKY29kZSBnZW5lcmF0aW9uIHRvb2xzIHdoZW4gZ2VuZXJhdGluZyBnbyB0eXBlIG1vZGVscy4KCmBgYGdvCmRvYywgZXJyID0gbG9hZGVyLkxvYWRGcm9tRmlsZSgib3BlbmFwaS55bWwiKQoKZm9yIF8sIHBhdGggOj0gcmFuZ2UgZG9jLlBhdGhzLkluTWF0Y2hpbmdPcmRlcigpIHsKCXBhdGhJdGVtIDo9IGRvYy5QYXRocy5GaW5kKHBhdGgpCgoJaWYgcGF0aEl0ZW0uR2V0ID09IG5pbCB8fCBwYXRoSXRlbS5HZXQuUmVzcG9uc2VzLlN0YXR1cygyMDApIHsKCQljb250aW51ZQoJfQoKCWZvciBfLCBzIDo9IHJhbmdlIHBhdGhJdGVtLkdldC5SZXNwb25zZXMuU3RhdHVzKDIwMCkuVmFsdWUuQ29udGVudCB7CgkJbmFtZSwgbWF0Y2ggOj0gUmVmZXJlbmNlc0NvbXBvbmVudEluUm9vdERvY3VtZW50KGRvYywgcy5TY2hlbWEpCgkJZm10LlByaW50bG4ocGF0aCwgbWF0Y2gsIG5hbWUpIC8vIC9yZWNvcmQgdHJ1ZSAjL2NvbXBvbmVudHMvc2NoZW1hcy9Cb29rUmVjb3JkCgl9Cn0KYGBgCgojIyBDSEFOR0VMT0c6IFN1Yi12MSBicmVha2luZyBBUEkgY2hhbmdlcwoKIyMjIHYwLjEyNy4wCiogRG93bmdyYWRlZCBgZ2l0aHViLmNvbS9nb3JpbGxhL211eGAgZGVwIGZyb20gYDEuOC4xYCB0byBgMS44LjBgLgoKIyMjIHYwLjEyNi4wCiogYG9wZW5hcGkzLkNpcmN1bGFyUmVmZXJlbmNlRXJyb3JgIGFuZCBgb3BlbmFwaTMuQ2lyY3VsYXJSZWZlcmVuY2VDb3VudGVyYCBhcmUgcmVtb3ZlZC4gYG9wZW5hcGkzLkxvYWRlcmAgbm93IGltcGxlbWVudHMgcmVmZXJlbmNlIGJhY2t0cmFja2luZywgc28gYW55IGtpbmQgb2YgY2lyY3VsYXIgcmVmZXJlbmNlcyBzaG91bGQgYmUgcHJvcGVybHkgcmVzb2x2ZWQuCiogYEludGVybmFsaXplUmVmc2Agbm93IHRha2VzIGEgcmVmTmFtZVJlc29sdmVyIHRoYXQgaGFzIGFjY2VzcyB0byBgb3BlbmFwaTMuVGAgYW5kIG1vcmUgcHJvcGVydGllcyBvZiB0aGUgcmVmZXJlbmNlIG5lZWRpbmcgcmVzb2x2aW5nLgoqIFRoZSBgRGVmYXVsdFJlZk5hbWVSZXNvbHZlcmAgaGFzIGJlZW4gdXBkYXRlZCwgY2hvb3NpbmcgbmFtZXMgdGhhdCB3aWxsIGJlIGxlc3MgbGlrZWx5IHRvIGNvbGxpZGUgd2l0aCBlYWNoIG90aGVyLiBCZWNhdXNlIG9mIHRoaXMgaW50ZXJuYWxpemVkIHNwZWNzIHdpbGwgbGlrZWx5IGNoYW5nZSBzbGlnaHRseS4KKiBgb3BlbmFwaTMuRm9ybWF0YCBhbmQgYG9wZW5hcGkzLkZvcm1hdENhbGxiYWNrYCBhcmUgcmVtb3ZlZCBhbmQgdGhlIHR5cGUgb2YgYG9wZW5hcGkzLlNjaGVtYVN0cmluZ0Zvcm1hdHNgIGhhcyBjaGFuZ2VkLgoKIyMjIHYwLjEyNS4wCiogVGhlIGBvcGVuYXBpM2ZpbHRlci5FcnJGdW5jYCBhbmQgYG9wZW5hcGkzZmlsdGVyLkxvZ0Z1bmNgIGZ1bmMgdHlwZXMgbm93IHRha2UgdGhlIHZhbGlkYXRlZCByZXF1ZXN0J3MgY29udGV4dCBhcyBmaXJzdCBhcmd1bWVudC4KCiMjIyB2MC4xMjQuMAoqIGBvcGVuYXBpMy5TY2hlbWEuVHlwZWAgJiBgb3BlbmFwaTIuUGFyYW1ldGVyLlR5cGVgIGZpZWxkcyB3ZW50IGZyb20gYSBgc3RyaW5nYCB0byB0aGUgdHlwZSBgKlR5cGVgIHdpdGggbWV0aG9kczogYEluY2x1ZGVzYCwgYElzYCwgYFBlcm1pdHNgICYgYFNsaWNlYC4KCiMjIyB2MC4xMjIuMAoqIGBQYXRoc2AgZmllbGQgb2YgYG9wZW5hcGkzLlRgIGlzIG5vdyBhIHBvaW50ZXIKKiBgUmVzcG9uc2VzYCBmaWVsZCBvZiBgb3BlbmFwaTMuT3BlcmF0aW9uYCBpcyBub3cgYSBwb2ludGVyCiogYG9wZW5hcGkzLlBhdGhzYCB3ZW50IGZyb20gYG1hcFtzdHJpbmddKlBhdGhJdGVtYCB0byBhIHN0cnVjdCB3aXRoIGFuIGBFeHRlbnNpb25zYCBmaWVsZCBhbmQgbWV0aG9kczogYFNldGAsIGBWYWx1ZWAsIGBMZW5gLCBgTWFwYCwgYW5kIGBOZXcqYC4KKiBgb3BlbmFwaTMuQ2FsbGJhY2tgIHdlbnQgZnJvbSBgbWFwW3N0cmluZ10qUGF0aEl0ZW1gIHRvIGEgc3RydWN0IHdpdGggYW4gYEV4dGVuc2lvbnNgIGZpZWxkIGFuZCBtZXRob2RzOiBgU2V0YCwgYFZhbHVlYCwgYExlbmAsIGBNYXBgLCBhbmQgYE5ldypgLgoqIGBvcGVuYXBpMy5SZXNwb25zZXNgIHdlbnQgZnJvbSBgbWFwW3N0cmluZ10qUmVzcG9uc2VSZWZgIHRvIGEgc3RydWN0IHdpdGggYW4gYEV4dGVuc2lvbnNgIGZpZWxkIGFuZCBtZXRob2RzOiBgU2V0YCwgYFZhbHVlYCwgYExlbmAsIGBNYXBgLCBhbmQgYE5ldypgLgoqIGAob3BlbmFwaTMuUmVzcG9uc2VzKS5HZXQoaW50KWAgcmVuYW1lZCB0byBgKCpvcGVuYXBpMy5SZXNwb25zZXMpLlN0YXR1cyhpbnQpYAoKIyMjIHYwLjEyMS4wCiogSW50cm9kdWNlIGBvcGVuYXBpMy5SZXF1ZXN0Qm9kaWVzYCAoYW4gYWxpYXMgb24gYG1hcFtzdHJpbmddKm9wZW5hcGkzLlJlc3BvbnNlUmVmYCkgYW5kIHVzZSBpdCBpbiBwbGFjZSBvZiBgb3BlbmFwaTMuUmVzcG9uc2VzYCBmb3IgZmllbGQgYG9wZW5hcGkzLkNvbXBvbmVudHMuUmVzcG9uc2VzYC4KCiMjIyB2MC4xMTYuMAoqIERyb3BwZWQgYG9wZW5hcGkzZmlsdGVyLkRlZmF1bHRPcHRpb25zYC4gVXNlIGAmb3BlbmFwaTNmaWx0ZXIuT3B0aW9uc3t9YCBkaXJlY3RseSBpbnN0ZWFkLgoKIyMjIHYwLjExMy4wCiogVGhlIHN0cmluZyBmb3JtYXQgYGVtYWlsYCBoYXMgYmVlbiByZW1vdmVkIGJ5IGRlZmF1bHQuIFRvIHVzZSBpdCBwbGVhc2UgY2FsbCBgb3BlbmFwaTMuRGVmaW5lU3RyaW5nRm9ybWF0KCJlbWFpbCIsIG9wZW5hcGkzLkZvcm1hdE9mU3RyaW5nRm9yRW1haWwpYC4KKiBGaWVsZCBgb3BlbmFwaTMuVC5Db21wb25lbnRzYCBpcyBub3cgYSBwb2ludGVyLgoqIEZpZWxkcyBgb3BlbmFwaTMuU2NoZW1hLkFkZGl0aW9uYWxQcm9wZXJ0aWVzYCBhbmQgYG9wZW5hcGkzLlNjaGVtYS5BZGRpdGlvbmFsUHJvcGVydGllc0FsbG93ZWRgIGFyZSByZXBsYWNlZCBieSBgb3BlbmFwaTMuU2NoZW1hLkFkZGl0aW9uYWxQcm9wZXJ0aWVzLlNjaGVtYWAgYW5kIGBvcGVuYXBpMy5TY2hlbWEuQWRkaXRpb25hbFByb3BlcnRpZXMuSGFzYCByZXNwZWN0aXZlbHkuCiogVHlwZSBgb3BlbmFwaTMuRXh0ZW5zaW9uUHJvcHNgIGlzIG5vdyBqdXN0IGBtYXBbc3RyaW5nXWFueWAgYW5kIGV4dGVuc2lvbnMgYXJlIGFjY2Vzc2libGUgdGhyb3VnaCB0aGUgYEV4dGVuc2lvbnNgIGZpZWxkLgoKIyMjIHYwLjExMi4wCiogYChvcGVuYXBpMy5WYWxpZGF0aW9uT3B0aW9ucykuRXhhbXBsZXNWYWxpZGF0aW9uRGlzYWJsZWRgIGhhcyBiZWVuIHVuZXhwb3J0ZWQuCiogYChvcGVuYXBpMy5WYWxpZGF0aW9uT3B0aW9ucykuU2NoZW1hRm9ybWF0VmFsaWRhdGlvbkVuYWJsZWRgIGhhcyBiZWVuIHVuZXhwb3J0ZWQuCiogYChvcGVuYXBpMy5WYWxpZGF0aW9uT3B0aW9ucykuU2NoZW1hUGF0dGVyblZhbGlkYXRpb25EaXNhYmxlZGAgaGFzIGJlZW4gdW5leHBvcnRlZC4KCiMjIyB2MC4xMTEuMAoqIENoYW5nZWQgYGZ1bmMgKCpfKSBWYWxpZGF0ZShjdHggY29udGV4dC5Db250ZXh0KSBlcnJvcmAgdG8gYGZ1bmMgKCpfKSBWYWxpZGF0ZShjdHggY29udGV4dC5Db250ZXh0LCBvcHRzIC4uLlZhbGlkYXRpb25PcHRpb24pIGVycm9yYC4KKiBgb3BlbmFwaTMuV2l0aFZhbGlkYXRpb25PcHRpb25zKGN0eCBjb250ZXh0LkNvbnRleHQsIG9wdHMgKlZhbGlkYXRpb25PcHRpb25zKSBjb250ZXh0LkNvbnRleHRgIHByb3RvdHlwZSBjaGFuZ2VkIHRvIGBvcGVuYXBpMy5XaXRoVmFsaWRhdGlvbk9wdGlvbnMoY3R4IGNvbnRleHQuQ29udGV4dCwgb3B0cyAuLi5WYWxpZGF0aW9uT3B0aW9uKSBjb250ZXh0LkNvbnRleHRgLgoKIyMjIHYwLjEwMS4wCiogYG9wZW5hcGkzLlNjaGVtYUZvcm1hdFZhbGlkYXRpb25EaXNhYmxlZGAgaGFzIGJlZW4gcmVtb3ZlZCBpbiBmYXZvdXIgb2YgYW4gb3B0aW9uIGBvcGVuYXBpMy5FbmFibGVTY2hlbWFGb3JtYXRWYWxpZGF0aW9uKClgIHBhc3NlZCB0byBgb3BlbmFwaTMuVC5WYWxpZGF0ZWAuIFRoZSBkZWZhdWx0IGJlaGF2aW91ciBpcyBhbHNvIG5vdyB0byBub3QgdmFsaWRhdGUgZm9ybWF0cywgYXMgdGhlIE9wZW5BUEkgc3BlYyBtZW50aW9ucyB0aGUgYGZvcm1hdGAgaXMgYW4gb3BlbiB2YWx1ZS4KCiMjIyB2MC44NC4wCiogVGhlIHByb3RvdHlwZSBvZiBgb3BlbmFwaTNnZW4uTmV3U2NoZW1hUmVmRm9yVmFsdWVgIGNoYW5nZWQ6CgkqIEl0IG5vIGxvbmdlciByZXR1cm5zIGEgbWFwIGJ1dCB0aGF0IGlzIHN0aWxsIGFjY2Vzc2libGUgdW5kZXIgdGhlIGZpZWxkIGAoKkdlbmVyYXRvcikuU2NoZW1hUmVmc2AuCgkqIEl0IG5vdyB0YWtlcyBpbiBhbiBhZGRpdGlvbmFsIGFyZ3VtZW50IChiYXNpY2FsbHkgYGRvYy5Db21wb25lbnRzLlNjaGVtYXNgKSB3aGljaCBnZXRzIHdyaXR0ZW4gdG8gc28gYCRyZWZgIGN5Y2xlcyBjYW4gYmUgcHJvcGVybHkgaGFuZGxlZC4KCiMjIyB2MC42MS4wCiogUmVuYW1lZCBgb3BlbmFwaTIuU3dhZ2dlcmAgdG8gYG9wZW5hcGkyLlRgLgoqIFJlbmFtZWQgYG9wZW5hcGkyY29udi5Gcm9tVjNTd2FnZ2VyYCB0byBgb3BlbmFwaTJjb252LkZyb21WM2AuCiogUmVuYW1lZCBgb3BlbmFwaTJjb252LlRvVjNTd2FnZ2VyYCB0byBgb3BlbmFwaTJjb252LlRvVjNgLgoqIFJlbmFtZWQgYG9wZW5hcGkzLkxvYWRTd2FnZ2VyRnJvbURhdGFgIHRvIGBvcGVuYXBpMy5Mb2FkRnJvbURhdGFgLgoqIFJlbmFtZWQgYG9wZW5hcGkzLkxvYWRTd2FnZ2VyRnJvbURhdGFXaXRoUGF0aGAgdG8gYG9wZW5hcGkzLkxvYWRGcm9tRGF0YVdpdGhQYXRoYC4KKiBSZW5hbWVkIGBvcGVuYXBpMy5Mb2FkU3dhZ2dlckZyb21GaWxlYCB0byBgb3BlbmFwaTMuTG9hZEZyb21GaWxlYC4KKiBSZW5hbWVkIGBvcGVuYXBpMy5Mb2FkU3dhZ2dlckZyb21VUklgIHRvIGBvcGVuYXBpMy5Mb2FkRnJvbVVSSWAuCiogUmVuYW1lZCBgb3BlbmFwaTMuTmV3U3dhZ2dlckxvYWRlcmAgdG8gYG9wZW5hcGkzLk5ld0xvYWRlcmAuCiogUmVuYW1lZCBgb3BlbmFwaTMuU3dhZ2dlcmAgdG8gYG9wZW5hcGkzLlRgLgoqIFJlbmFtZWQgYG9wZW5hcGkzLlN3YWdnZXJMb2FkZXJgIHRvIGBvcGVuYXBpMy5Mb2FkZXJgLgoqIFJlbmFtZWQgYG9wZW5hcGkzZmlsdGVyLlZhbGlkYXRpb25IYW5kbGVyLlN3YWdnZXJGaWxlYCB0byBgb3BlbmFwaTNmaWx0ZXIuVmFsaWRhdGlvbkhhbmRsZXIuRmlsZWAuCiogUmVuYW1lZCBgcm91dGVycy5Sb3V0ZS5Td2FnZ2VyYCB0byBgcm91dGVycy5Sb3V0ZS5TcGVjYC4KCiMjIyB2MC41MS4wCiogVHlwZSBgb3BlbmFwaTNmaWx0ZXIuUm91dGVgIG1vdmVkIHRvIGByb3V0ZXJzYCAoYW5kIGBSb3V0ZS5IYW5kbGVyYCB3YXMgZHJvcHBlZC4gU2VlIGh0dHBzOi8vZ2l0aHViLmNvbS9nZXRraW4va2luLW9wZW5hcGkvaXNzdWVzLzMyOSkKKiBUeXBlIGBvcGVuYXBpM2ZpbHRlci5Sb3V0ZUVycm9yYCBtb3ZlZCB0byBgcm91dGVyc2AgKHNvIGRpZCBgRXJyUGF0aE5vdEZvdW5kYCBhbmQgYEVyck1ldGhvZE5vdEFsbG93ZWRgIHdoaWNoIGFyZSBub3cgYFJvdXRlRXJyb3JgcykKKiBSb3V0ZXJzJyBgRmluZFJvdXRlKC4uLilgIG1ldGhvZCBub3cgdGFrZXMgb25seSBvbmUgYXJndW1lbnQ6IGAqaHR0cC5SZXF1ZXN0YAoqIGBnZXRraW4va2luLW9wZW5hcGkvb3BlbmFwaTNmaWx0ZXIuUm91dGVyYCBtb3ZlZCB0byBgZ2V0a2luL2tpbi1vcGVuYXBpL3JvdXRlcnMvbGVnYWN5YAoqIGBvcGVuYXBpM2ZpbHRlci5OZXdSb3V0ZXIoKWAgYW5kIGl0cyByZWxhdGVkIGBXaXRoU3dhZ2dlckZyb21GaWxlKHN0cmluZylgLCBgV2l0aFN3YWdnZXIoKm9wZW5hcGkzLlN3YWdnZXIpYCwgYEFkZFN3YWdnZXJGcm9tRmlsZShzdHJpbmcpYCBhbmQgYEFkZFN3YWdnZXIoKm9wZW5hcGkzLlN3YWdnZXIpYCBhcmUgYWxsIHJlcGxhY2VkIHdpdGggYSBzaW5nbGUgYDxyb3V0ZXIgcGFja2FnZT4uTmV3Um91dGVyKCpvcGVuYXBpMy5Td2FnZ2VyKWAKCSogTk9URTogdGhlIGBOZXdSb3V0ZXIoZG9jKWAgY2FsbCBub3cgcmVxdWlyZXMgdGhhdCB0aGUgdXNlciBlbnN1cmVzIGBkb2NgIGlzIHZhbGlkIChgZG9jLlZhbGlkYXRlKCkgIT0gbmlsYCkuIFRoaXMgdXNlZCB0byBiZSBhc3NlcnRlZC4KCiMjIyB2MC40Ny4wCkZpZWxkIGAoKm9wZW5hcGkzLlN3YWdnZXJMb2FkZXIpLkxvYWRTd2FnZ2VyRnJvbVVSSUZ1bmNgIG9mIHR5cGUgYGZ1bmMoKm9wZW5hcGkzLlN3YWdnZXJMb2FkZXIsICp1cmwuVVJMKSAoKm9wZW5hcGkzLlN3YWdnZXIsIGVycm9yKWAgd2FzIHJlbW92ZWQgYWZ0ZXIgdGhlIGFkZGl0aW9uIG9mIHRoZSBmaWVsZCBgKCpvcGVuYXBpMy5Td2FnZ2VyTG9hZGVyKS5SZWFkRnJvbVVSSUZ1bmNgIG9mIHR5cGUgYGZ1bmMoKm9wZW5hcGkzLlN3YWdnZXJMb2FkZXIsICp1cmwuVVJMKSAoW11ieXRlLCBlcnJvcilgLgo=
+ readmeEtag: '"690ef903cb342d822a999b26d34a1d4fc3b0aa68"'
+ readmeLastModified: Thu, 22 Aug 2024 12:26:31 GMT
repositoryId: 94029207
description: >-
OpenAPI 3.0 (and Swagger v2) implementation for Go (parsing, converting,
validation, and more)
created: '2017-06-11T20:12:06Z'
- updated: '2024-08-21T08:21:30Z'
+ updated: '2024-08-22T12:26:35Z'
language: Go
archived: false
- stars: 2529
+ stars: 2530
watchers: 23
- forks: 422
+ forks: 423
owner: getkin
logo: https://avatars.githubusercontent.com/u/40365715?v=4
license: MIT
- repoEtag: '"9aa29222ba0859304424e48720eabfab54bacfb556392f5ef3b7d9ec66f4757d"'
- repoLastModified: Wed, 21 Aug 2024 08:21:30 GMT
+ repoEtag: '"cb77b01ec29b6bfab4fe45adbcec7c30c2a43beaa1b10c7710fedfb1e4de752a"'
+ repoLastModified: Thu, 22 Aug 2024 12:26:35 GMT
foundInMaster: true
v2: true
id: f6838ce08e87fa4c3dc813c97193ece3
@@ -3250,7 +3250,7 @@
repositoryId: 55149439
description: Parse and generate API specification formats
created: '2016-03-31T12:39:05Z'
- updated: '2024-08-21T18:04:36Z'
+ updated: '2024-08-22T16:24:03Z'
language: PHP
archived: false
stars: 35
@@ -3259,8 +3259,8 @@
owner: apioo
logo: https://avatars.githubusercontent.com/u/18172950?v=4
license: Apache-2.0
- repoEtag: '"5d4e16dafb387ce1350139d68b51b6746658d81996cf909974ffa6a6c718fcb8"'
- repoLastModified: Wed, 21 Aug 2024 18:04:36 GMT
+ repoEtag: '"d34fe7eea7037bad44e4347b3ba6bcfd2df534123e67114cdc174c00a1e6aeba"'
+ repoLastModified: Thu, 22 Aug 2024 16:24:03 GMT
foundInMaster: true
id: ee32e280cf10ca5103c9b9e144021b91
- source: https://openapi.tools/
@@ -3284,17 +3284,17 @@
in .NET along with common serializers to extract raw OpenAPI JSON and YAML
documents from the model.
created: '2017-07-14T00:24:14Z'
- updated: '2024-08-21T06:25:06Z'
+ updated: '2024-08-22T14:41:54Z'
language: C#
archived: false
- stars: 1371
+ stars: 1372
watchers: 64
forks: 231
owner: microsoft
logo: https://avatars.githubusercontent.com/u/6154722?v=4
license: MIT
- repoEtag: '"d9596ed687214c30c190802e95a999128d93eee2c5d3ef57f39db094ada4c1c6"'
- repoLastModified: Wed, 21 Aug 2024 06:25:06 GMT
+ repoEtag: '"c7c71c49ffd65b75654b214b57d1bbe73df29fb92b1072ceb68530633ab64c9f"'
+ repoLastModified: Thu, 22 Aug 2024 14:41:54 GMT
foundInMaster: true
id: 1066748bb5b1f114a70856a29fee4aa7
- source:
@@ -3379,17 +3379,17 @@
repositoryId: 107609542
description: Open API 3 Parser/Validator for Ruby
created: '2017-10-19T23:33:52Z'
- updated: '2024-08-15T13:30:35Z'
+ updated: '2024-08-22T15:28:19Z'
language: Ruby
archived: false
- stars: 89
+ stars: 90
watchers: 8
forks: 12
owner: kevindew
logo: https://avatars.githubusercontent.com/u/282717?v=4
license: MIT
- repoEtag: '"0aef7841bdf969fc1746c7f5d249f622cd6f8762e7f59923f28f40c69d0b2da5"'
- repoLastModified: Thu, 15 Aug 2024 13:30:35 GMT
+ repoEtag: '"03d37f67db1e7c0b480a784029ed52989de281dcf6ff35bf8fc8f48f65a98344"'
+ repoLastModified: Thu, 22 Aug 2024 15:28:19 GMT
foundInMaster: true
id: 609fe191ac5d7b1b89c772e47fd2deb8
- source: https://openapi.tools/
@@ -3420,15 +3420,15 @@
id: 0c78f909fbd7707b739560ebfa258b81
repositoryMetadata:
base64Readme: >-
- IyBPcGVuQVBJIFNESyBnZW5lcmF0b3IgLSBBUEkgY2xpZW50IGdlbmVyYXRvcgoKQVBJIGNsaWVudCBnZW5lcmF0b3IgaXMgYSBjb25zb2xlIGFwcGxpY2F0aW9uIGNhcGFibGUgb2YgYXV0by1nZW5lcmF0aW5nIGEgW1BTUjE4XShodHRwczovL3d3dy5waHAtZmlnLm9yZy9wc3IvcHNyLTE4LykvW1BTUjddKGh0dHBzOi8vd3d3LnBocC1maWcub3JnL3Bzci9wc3ItNy8pIGNvbXBsaWFudCBBUEkgY2xpZW50IGJhc2VkIG9uIFtPcGVuQVBJIHYzXShodHRwczovL3N3YWdnZXIuaW8vc3BlY2lmaWNhdGlvbi8pIHNwZWNpZmljYXRpb24gYWNjb3JkaW5nIHRvIFBIUCBiZXN0IHByYWN0aWNlcyBhbmQgeW91ciBjb2RlIHN0eWxlIHN0YW5kYXJkcy4KClshW0J1aWxkIFN0YXR1c10oaHR0cHM6Ly90cmF2aXMtY2kub3JnL0RvY2xlckxhYnMvYXBpLWNsaWVudC1nZW5lcmF0b3Iuc3ZnP2JyYW5jaD1tYXN0ZXIpXShodHRwczovL3RyYXZpcy1jaS5vcmcvRG9jbGVyTGFicy9hcGktY2xpZW50LWdlbmVyYXRvcikKWyFbQ292ZXJhZ2UgU3RhdHVzXShodHRwczovL2NvdmVyYWxscy5pby9yZXBvcy9naXRodWIvRG9jbGVyTGFicy9hcGktY2xpZW50LWdlbmVyYXRvci9iYWRnZS5zdmc/YnJhbmNoPW1hc3RlcildKGh0dHBzOi8vY292ZXJhbGxzLmlvL2dpdGh1Yi9Eb2NsZXJMYWJzL2FwaS1jbGllbnQtZ2VuZXJhdG9yP2JyYW5jaD1tYXN0ZXIpClshW1BIUFN0YW4gTGV2ZWxdKGh0dHBzOi8vaW1nLnNoaWVsZHMuaW8vYmFkZ2UvUEhQU3Rhbi1sZXZlbCUyMDgtYnJpZ2h0Z3JlZW4uc3ZnP3N0eWxlPWZsYXQpXShodHRwczovL2ltZy5zaGllbGRzLmlvL2JhZGdlL1BIUFN0YW4tbGV2ZWwlMjA4LWJyaWdodGdyZWVuLnN2Zz9zdHlsZT1mbGF0KQoKIyMgUmVxdWlyZW1lbnRzCi0gT3BlbkFQSSA+PSAzLjAKLSBQSFAgPj0gNy4wCgojIyBXaHkgdXNpbmcgaXQ/Ci0gV2l0aCBnZW5lcmF0ZWQgY2xpZW50IHlvdSBhcmUgYWx3YXlzIHN1cmUgdGhhdCB5b3VyIE9wZW5BUEkgc3BlY2lmaWNhdGlvbiBpcyB1cC10by1kYXRlLgotIFdvcmsgd2l0aCBvYmplY3RzIGluc3RlYWQgb2YgcmF3IGRhdGEsIGl0IGlzIE9PUCBmcmllbmRseS4KLSBTYXZlcyB5b3VyIHRpbWUuIFlvdSBkb24ndCBuZWVkIHRvIHdyaXRlIGRhdGEgbWFwcGVycyB5b3Vyc2VsZiB0byBwb3B1bGF0ZSB0aG9zZSBvYmplY3RzIHdpdGggdGhlIGRhdGEgZnJvbSB0aGUgcmVzcG9uc2UuCi0gQWxsIHRoZSBiYXNpYyB0eXBlIHZhbGlkYXRpb25zIGluIHRoZSByZXF1ZXN0IGFuZCB0aGUgcmVzcG9uc2UgZG9uZSBhdXRvbWF0aWNhbGx5LgotIERlc3BpdGUgdGhlIGZhY3QgdGhlIGNvZGUgaXMgZ2VuZXJhdGVkIGl0J3MgY2xlYXIgYW5kIHJlYWRhYmxlLCBzaW1wbGUgdG8gZGVidWcgYW5kIHRvIHJlYXNvbiBhYm91dC4KLSBIaWdobHkgY29uZmlndXJhYmxlIGFuZCBleHRlbnNpYmxlLgotIFJlbGlhYmxlIGFuZCB3ZWxsIHRlc3RlZC4KLSBTaW1wbHksICoqaWYgc29tZXRoaW5nIGNhbiBiZSBhdXRvbWF0ZWQgaXQgc2hvdWxkIGJlIGF1dG9tYXRlZC4qKiAgRm9jdXMgb24gaW1wb3J0YW50IHN0dWZmLgoKIyMgRmVhdHVyZXMKLSBTdXBwb3J0cyB5YW1sIG9yIGpzb24gc3BlY2lmaWNhdGlvbiBmaWxlIGZvcm1hdHMuCi0gVmFsaWRhdGVzIHlvdXIgT3BlbkFQSSBzcGVjaWZpY2F0aW9uLgotIFN1cHBvcnRzIG11bHRpcGxlIGNvbnRlbnQgdHlwZXM6CiAgICAqIGFwcGxpY2F0aW9uL2pzb24KICAgICogYXBwbGljYXRpb24veC13d3ctZm9ybS11cmxlbmNvZGVkCiAgICAqIGFwcGxpY2F0aW9uL3htbAotIFN1cHBvcnRzIG5ldyBQSFAgdmVyc2lvbnMgc3ludGF4IGZlYXR1cmVzLgotIEl0IGlzIGJhc2UgY2xpZW50IGluZGVwZW5kZW50LCB5b3UgYXJlIGZyZWUgdG8gY2hvb3NlIGFueSBbZXhpc3RpbmcgUFNSLTE4IGNvbXBsaWFudCBjbGllbnRdKGh0dHBzOi8vcGFja2FnaXN0Lm9yZy9wcm92aWRlcnMvcHNyL2h0dHAtY2xpZW50LWltcGxlbWVudGF0aW9uKS4gSnVzdCBjaG9vc2UgdGhlIG9uZSB3aGljaCB5b3UgYWxyZWFkeSB1c2UsIHNvIGdlbmVyYXRlZCBjbGllbnQgd291bGQgbm90IGNhdXNlIGFueSBjb25mbGljdHMgd2l0aCB5b3VyIGRlcGVuZGVuY2llcy4gQWx0aG91Z2ggbm90IHJlY29tbWVuZGVkLCB5b3UgY2FuIGFsc28gdXNlIG9yIGJ1aWxkIHlvdXIgb3duIFBTUi0xOCBpbXBsZW1lbnRhdGlvbiwgYXMgdGhlIGdlbmVyYXRlZCBjbGllbnQgZGVwZW5kcyBvbiBQU1IgaW50ZXJmYWNlcyBvbmx5LgotIEFwcGxpZXMgY29kZSBzdHlsZSBydWxlcyB0byBnZW5lcmF0ZWQgY29kZSwgeW91IGNhbiBzcGVjaWZ5IHlvdXIgb3duLgotIEdlbmVyYXRlcyBSRUFETUUgYW5kIGNvbXBvc2VyLmpzb24gZmlsZXMgd2l0aCBwb3NzaWJpbGl0eSB0byB1c2UgeW91ciBvd24gdGVtcGxhdGUuCi0gU3VwcG9ydHMgYGFsbE9mYCBPcGVuQVBJIHBhcmFtZXRlci4KLSBTdXBwb3J0cyBudWxsYWJsZSBvcHRpb25hbCBzY2hlbWUgcHJvcGVydHkuCgojIyBFeGFtcGxlCkNoZWNrIG91dCBbZXhhbXBsZV0oaHR0cHM6Ly9naXRodWIuY29tL0RvY2xlckxhYnMvYXBpLWNsaWVudC1nZW5lcmF0b3IvdHJlZS9tYXN0ZXIvZXhhbXBsZSkgZGlyZWN0b3J5IHRvIHNlZSB0aGUgY29kZSBnZW5lcmF0ZWQgYnkgYXBpLWNsaWVudC1nZW5lcmF0b3IuCgpUcnkgaXQgb3V0OgpgYGBiYXNoCmNkIGV4YW1wbGUgJiYgXApjb21wb3NlciBpbnN0YWxsICYmIFwKcGhwIHRlc3QtZXhhbXBsZS5waHAKYGBgCgojIyBVc2FnZQojIyMgV2l0aCBEb2NrZXIKYGBgYmFzaAokIGRvY2tlciBydW4gLWl0IFwKLXYge3BhdGgtdG8tc3BlY2lmaWNhdGlvbn0vb3BlbmFwaS55YW1sOi9vcGVuYXBpLnlhbWw6cm8gXAotdiB7cGF0aC10by1jbGllbnR9L3NvbWUtYXBpLWNsaWVudDovY2xpZW50IFwKLWUgTkFNRVNQQUNFPUdyb3VwXFxTb21lQXBpQ2xpZW50IFwKLWUgT1BFTkFQST0vb3BlbmFwaS55YW1sIFwKLWUgT1VUUFVUX0RJUj0vY2xpZW50IFwKLWUgUEFDS0FHRT1ncm91cC9zb21lLWFwaS1jbGllbnQgXApkaGxhYnMvYXBpLWNsaWVudC1nZW5lcmF0b3IKYGBgCgojIyMgV2l0aG91dCBEb2NrZXIKUHJlY29uZGl0aW9uczogUEhQIDcuNAoKQ2xvbmUgdGhlIHJlcG9zaXRvcnkgYW5kIHJ1bjoKYGBgYmFzaCAKT1BFTkFQST17cGF0aC10by1zcGVjaWZpY2F0aW9ufS9vcGVuYXBpLnlhbWwgTkFNRVNQQUNFPUdyb3VwXFNvbWVBcGlDbGllbnQgUEFDS0FHRT1ncm91cC9zb21lLWFwaS1jbGllbnQgT1VUUFVUX0RJUj17cGF0aC10by1jbGllbnR9L2dlbmVyYXRlZCAuL2Jpbi9hcGktY2xpZW50LWdlbmVyYXRvciBnZW5lcmF0ZQpgYGAgCgojIyBDb25maWd1cmF0aW9uClRoZSBmb2xsb3dpbmcgZW52aXJvbm1lbnQgdmFyaWFibGVzIGFyZSBhdmFpbGFibGU6Cgp8IFZhcmlhYmxlIHwgUmVxdWlyZWQgfCBEZWZhdWx0ICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IEVudW0gfCBFeGFtcGxlICAgICAgICAgICAgICAgICAgICB8CnwtLS0tLS0tLS0tLS18LS0tLS0tLS0tfC0tLS0tLS0tLS0tLS0tLS0tLXwtLS0tLS0tLS18LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tfAp8IGBOQU1FU1BBQ0VgIHwgeWVzIHwgfCB8IEdyb3VwXFxTb21lQXBpQ2xpZW50IHwKfCBgUEFDS0FHRWAgfCB5ZXMgfCB8IHwgZ3JvdXAvc29tZS1hcGktY2xpZW50IHwKfCBgT1BFTkFQSSBgIHwgeWVzIHwgfCB8IC9hcGkvb3BlbmFwaS55YW1sIHwKfCBgT1VUUFVUX0RJUmAgfCB5ZXMgfCB8IHwgL2NsaWVudCB8CnwgYENPREVfU1RZTEVgIHwgbm8gfCB7cGF0aC10by1yZXBvc2l0b3J5fS8ucGhwLWNzLWZpeGVyLnBocC5kaXN0IHwgfCAvY2xpZW50L215Q29kZVN0eWxlLnBocCB8CnwgYFNPVVJDRV9ESVJgIHwgbm8gfCBzcmMgfCB8IHNyYyB8CnwgYENMSUVOVF9QSFBfVkVSU0lPTmAgfCBubyB8IDcuNCB8IDcuMCwgNy4xLCA3LjIsIDcuMywgNy40LCA4LjAsIDguMSwgOC4yLCA4LjMgfCA3LjQgfAp8IGBDT01QT1NFUl9KU09OX1RFTVBMQVRFX0RJUmAgfCBubyB8IHtwYXRoLXRvLXJlcG9zaXRvcnl9L3RlbXBsYXRlL2NvbXBvc2VyLmpzb24udHdpZyB8IHwgL3BhdGgvY29tcG9zZXIuanNvbi50d2lnIHwKfCBgUkVBRE1FX01EX1RFTVBMQVRFX0RJUmAgfCBubyB8IHtwYXRoLXRvLXJlcG9zaXRvcnl9L3RlbXBsYXRlL1JFQURNRS5tZC50d2lnIHwgfCAvcGF0aC9SRUFETUUubWQudHdpZyB8CnwgYEhUVFBfTUVTU0FHRWAgfCBubyB8IGd1enpsZSB8IGd1enpsZSwgbnlob2xtIHwgbnlob2xtIHwKfCBgQ09OVEFJTkVSYCB8IG5vIHwgcGltcGxlIHwgcGltcGxlIHwgcGltcGxlIHwKCiMjIFJ1bm5pbmcgdGVzdHMKCmBgYGJhc2gKJCBjb21wb3NlciBpbnN0YWxsCiQgbWFrZSB0ZXN0CmBgYAoKKGNoZWNrIGBtYWtlYCBmb3IgYWxsIGF2YWlsYWJsZSByb3V0aW5lcykuCg==
- readmeEtag: '"a1dfc3262f7c1bc85858273e9e807b38c058e49e"'
- readmeLastModified: Thu, 13 Jun 2024 08:45:30 GMT
+ IyBPcGVuQVBJIFNESyBnZW5lcmF0b3IgLSBBUEkgY2xpZW50IGdlbmVyYXRvcgoKQVBJIGNsaWVudCBnZW5lcmF0b3IgaXMgYSBjb25zb2xlIGFwcGxpY2F0aW9uIGNhcGFibGUgb2YgYXV0by1nZW5lcmF0aW5nIGEgW1BTUjE4XShodHRwczovL3d3dy5waHAtZmlnLm9yZy9wc3IvcHNyLTE4LykvW1BTUjddKGh0dHBzOi8vd3d3LnBocC1maWcub3JnL3Bzci9wc3ItNy8pIGNvbXBsaWFudCBBUEkgY2xpZW50IGJhc2VkIG9uIFtPcGVuQVBJIHYzXShodHRwczovL3N3YWdnZXIuaW8vc3BlY2lmaWNhdGlvbi8pIHNwZWNpZmljYXRpb24gYWNjb3JkaW5nIHRvIFBIUCBiZXN0IHByYWN0aWNlcyBhbmQgeW91ciBjb2RlIHN0eWxlIHN0YW5kYXJkcy4KClshW0J1aWxkIFN0YXR1c10oaHR0cHM6Ly90cmF2aXMtY2kub3JnL0RvY2xlckxhYnMvYXBpLWNsaWVudC1nZW5lcmF0b3Iuc3ZnP2JyYW5jaD1tYXN0ZXIpXShodHRwczovL3RyYXZpcy1jaS5vcmcvRG9jbGVyTGFicy9hcGktY2xpZW50LWdlbmVyYXRvcikKWyFbQ292ZXJhZ2UgU3RhdHVzXShodHRwczovL2NvdmVyYWxscy5pby9yZXBvcy9naXRodWIvRG9jbGVyTGFicy9hcGktY2xpZW50LWdlbmVyYXRvci9iYWRnZS5zdmc/YnJhbmNoPW1hc3RlcildKGh0dHBzOi8vY292ZXJhbGxzLmlvL2dpdGh1Yi9Eb2NsZXJMYWJzL2FwaS1jbGllbnQtZ2VuZXJhdG9yP2JyYW5jaD1tYXN0ZXIpClshW1BIUFN0YW4gTGV2ZWxdKGh0dHBzOi8vaW1nLnNoaWVsZHMuaW8vYmFkZ2UvUEhQU3Rhbi1sZXZlbCUyMDgtYnJpZ2h0Z3JlZW4uc3ZnP3N0eWxlPWZsYXQpXShodHRwczovL2ltZy5zaGllbGRzLmlvL2JhZGdlL1BIUFN0YW4tbGV2ZWwlMjA4LWJyaWdodGdyZWVuLnN2Zz9zdHlsZT1mbGF0KQoKIyMgUmVxdWlyZW1lbnRzCi0gT3BlbkFQSSA+PSAzLjAKLSBQSFAgPj0gNy4wCgojIyBXaHkgdXNpbmcgaXQ/Ci0gV2l0aCBnZW5lcmF0ZWQgY2xpZW50IHlvdSBhcmUgYWx3YXlzIHN1cmUgdGhhdCB5b3VyIE9wZW5BUEkgc3BlY2lmaWNhdGlvbiBpcyB1cC10by1kYXRlLgotIFdvcmsgd2l0aCBvYmplY3RzIGluc3RlYWQgb2YgcmF3IGRhdGEsIGl0IGlzIE9PUCBmcmllbmRseS4KLSBTYXZlcyB5b3VyIHRpbWUuIFlvdSBkb24ndCBuZWVkIHRvIHdyaXRlIGRhdGEgbWFwcGVycyB5b3Vyc2VsZiB0byBwb3B1bGF0ZSB0aG9zZSBvYmplY3RzIHdpdGggdGhlIGRhdGEgZnJvbSB0aGUgcmVzcG9uc2UuCi0gQWxsIHRoZSBiYXNpYyB0eXBlIHZhbGlkYXRpb25zIGluIHRoZSByZXF1ZXN0IGFuZCB0aGUgcmVzcG9uc2UgZG9uZSBhdXRvbWF0aWNhbGx5LgotIERlc3BpdGUgdGhlIGZhY3QgdGhlIGNvZGUgaXMgZ2VuZXJhdGVkIGl0J3MgY2xlYXIgYW5kIHJlYWRhYmxlLCBzaW1wbGUgdG8gZGVidWcgYW5kIHRvIHJlYXNvbiBhYm91dC4KLSBIaWdobHkgY29uZmlndXJhYmxlIGFuZCBleHRlbnNpYmxlLgotIFJlbGlhYmxlIGFuZCB3ZWxsIHRlc3RlZC4KLSBTaW1wbHksICoqaWYgc29tZXRoaW5nIGNhbiBiZSBhdXRvbWF0ZWQgaXQgc2hvdWxkIGJlIGF1dG9tYXRlZC4qKiAgRm9jdXMgb24gaW1wb3J0YW50IHN0dWZmLgoKIyMgRmVhdHVyZXMKLSBTdXBwb3J0cyB5YW1sIG9yIGpzb24gc3BlY2lmaWNhdGlvbiBmaWxlIGZvcm1hdHMuCi0gVmFsaWRhdGVzIHlvdXIgT3BlbkFQSSBzcGVjaWZpY2F0aW9uLgotIFN1cHBvcnRzIG11bHRpcGxlIGNvbnRlbnQgdHlwZXM6CiAgICAqIGFwcGxpY2F0aW9uL2pzb24KICAgICogYXBwbGljYXRpb24veC13d3ctZm9ybS11cmxlbmNvZGVkCiAgICAqIGFwcGxpY2F0aW9uL3htbAotIFN1cHBvcnRzIG5ldyBQSFAgdmVyc2lvbnMgc3ludGF4IGZlYXR1cmVzLgotIEl0IGlzIGJhc2UgY2xpZW50IGluZGVwZW5kZW50LCB5b3UgYXJlIGZyZWUgdG8gY2hvb3NlIGFueSBbZXhpc3RpbmcgUFNSLTE4IGNvbXBsaWFudCBjbGllbnRdKGh0dHBzOi8vcGFja2FnaXN0Lm9yZy9wcm92aWRlcnMvcHNyL2h0dHAtY2xpZW50LWltcGxlbWVudGF0aW9uKS4gSnVzdCBjaG9vc2UgdGhlIG9uZSB3aGljaCB5b3UgYWxyZWFkeSB1c2UsIHNvIGdlbmVyYXRlZCBjbGllbnQgd291bGQgbm90IGNhdXNlIGFueSBjb25mbGljdHMgd2l0aCB5b3VyIGRlcGVuZGVuY2llcy4gQWx0aG91Z2ggbm90IHJlY29tbWVuZGVkLCB5b3UgY2FuIGFsc28gdXNlIG9yIGJ1aWxkIHlvdXIgb3duIFBTUi0xOCBpbXBsZW1lbnRhdGlvbiwgYXMgdGhlIGdlbmVyYXRlZCBjbGllbnQgZGVwZW5kcyBvbiBQU1IgaW50ZXJmYWNlcyBvbmx5LgotIEFwcGxpZXMgY29kZSBzdHlsZSBydWxlcyB0byBnZW5lcmF0ZWQgY29kZSwgeW91IGNhbiBzcGVjaWZ5IHlvdXIgb3duLgotIEdlbmVyYXRlcyBSRUFETUUgYW5kIGNvbXBvc2VyLmpzb24gZmlsZXMgd2l0aCBwb3NzaWJpbGl0eSB0byB1c2UgeW91ciBvd24gdGVtcGxhdGUuCi0gU3VwcG9ydHMgYGFsbE9mYCwgYG9uZU9mYCwgYGFueU9mYCBPcGVuQVBJIHBhcmFtZXRlcnMuCi0gU3VwcG9ydHMgbnVsbGFibGUgb3B0aW9uYWwgc2NoZW1lIHByb3BlcnR5LgoKIyMgRXhhbXBsZQpDaGVjayBvdXQgW2V4YW1wbGVdKGh0dHBzOi8vZ2l0aHViLmNvbS9Eb2NsZXJMYWJzL2FwaS1jbGllbnQtZ2VuZXJhdG9yL3RyZWUvbWFzdGVyL2V4YW1wbGUpIGRpcmVjdG9yeSB0byBzZWUgdGhlIGNvZGUgZ2VuZXJhdGVkIGJ5IGFwaS1jbGllbnQtZ2VuZXJhdG9yLgoKVHJ5IGl0IG91dDoKYGBgYmFzaApjZCBleGFtcGxlICYmIFwKY29tcG9zZXIgaW5zdGFsbCAmJiBcCnBocCB0ZXN0LWV4YW1wbGUucGhwCmBgYAoKIyMgVXNhZ2UKIyMjIFdpdGggRG9ja2VyCmBgYGJhc2gKJCBkb2NrZXIgcnVuIC1pdCBcCi12IHtwYXRoLXRvLXNwZWNpZmljYXRpb259L29wZW5hcGkueWFtbDovb3BlbmFwaS55YW1sOnJvIFwKLXYge3BhdGgtdG8tY2xpZW50fS9zb21lLWFwaS1jbGllbnQ6L2NsaWVudCBcCi1lIE5BTUVTUEFDRT1Hcm91cFxcU29tZUFwaUNsaWVudCBcCi1lIE9QRU5BUEk9L29wZW5hcGkueWFtbCBcCi1lIE9VVFBVVF9ESVI9L2NsaWVudCBcCi1lIFBBQ0tBR0U9Z3JvdXAvc29tZS1hcGktY2xpZW50IFwKZGhsYWJzL2FwaS1jbGllbnQtZ2VuZXJhdG9yCmBgYAoKIyMjIFdpdGhvdXQgRG9ja2VyClByZWNvbmRpdGlvbnM6IFBIUCA3LjQKCkNsb25lIHRoZSByZXBvc2l0b3J5IGFuZCBydW46CmBgYGJhc2ggCk9QRU5BUEk9e3BhdGgtdG8tc3BlY2lmaWNhdGlvbn0vb3BlbmFwaS55YW1sIE5BTUVTUEFDRT1Hcm91cFxTb21lQXBpQ2xpZW50IFBBQ0tBR0U9Z3JvdXAvc29tZS1hcGktY2xpZW50IE9VVFBVVF9ESVI9e3BhdGgtdG8tY2xpZW50fS9nZW5lcmF0ZWQgLi9iaW4vYXBpLWNsaWVudC1nZW5lcmF0b3IgZ2VuZXJhdGUKYGBgIAoKIyMgQ29uZmlndXJhdGlvbgpUaGUgZm9sbG93aW5nIGVudmlyb25tZW50IHZhcmlhYmxlcyBhcmUgYXZhaWxhYmxlOgoKfCBWYXJpYWJsZSB8IFJlcXVpcmVkIHwgRGVmYXVsdCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBFbnVtIHwgRXhhbXBsZSAgICAgICAgICAgICAgICAgICAgfCBEZXNjcmlwdGlvbiB8CnwtLS0tLS0tLS0tLS18LS0tLS0tLS0tfC0tLS0tLS0tLS0tLS0tLS0tLXwtLS0tLS0tLS18LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tfC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS18CnwgYE5BTUVTUEFDRWAgfCB5ZXMgfCB8IHwgR3JvdXBcXFNvbWVBcGlDbGllbnQgfAp8IGBQQUNLQUdFYCB8IHllcyB8IHwgfCBncm91cC9zb21lLWFwaS1jbGllbnQgfAp8IGBPUEVOQVBJIGAgfCB5ZXMgfCB8IHwgL2FwaS9vcGVuYXBpLnlhbWwgfAp8IGBPVVRQVVRfRElSYCB8IHllcyB8IHwgfCAvY2xpZW50IHwKfCBgQ09ERV9TVFlMRWAgfCBubyB8IHtwYXRoLXRvLXJlcG9zaXRvcnl9Ly5waHAtY3MtZml4ZXIucGhwLmRpc3QgfCB8IC9jbGllbnQvbXlDb2RlU3R5bGUucGhwIHwKfCBgU09VUkNFX0RJUmAgfCBubyB8IHNyYyB8IHwgc3JjIHwKfCBgQ0xJRU5UX1BIUF9WRVJTSU9OYCB8IG5vIHwgNy40IHwgNy4wLCA3LjEsIDcuMiwgNy4zLCA3LjQsIDguMCwgOC4xLCA4LjIsIDguMyB8IDcuNCB8CnwgYENPTVBPU0VSX0pTT05fVEVNUExBVEVfRElSYCB8IG5vIHwge3BhdGgtdG8tcmVwb3NpdG9yeX0vdGVtcGxhdGUvY29tcG9zZXIuanNvbi50d2lnIHwgfCAvcGF0aC9jb21wb3Nlci5qc29uLnR3aWcgfAp8IGBSRUFETUVfTURfVEVNUExBVEVfRElSYCB8IG5vIHwge3BhdGgtdG8tcmVwb3NpdG9yeX0vdGVtcGxhdGUvUkVBRE1FLm1kLnR3aWcgfCB8IC9wYXRoL1JFQURNRS5tZC50d2lnIHwKfCBgSFRUUF9NRVNTQUdFYCB8IG5vIHwgZ3V6emxlIHwgZ3V6emxlLCBueWhvbG0gfCBueWhvbG0gfAp8IGBDT05UQUlORVJgIHwgbm8gfCBwaW1wbGUgfCBwaW1wbGUgfCBwaW1wbGUgfAp8IGBJTkNMVURFX1RBR1NgIHwgbm8gfCB8IHwgdGFnMSx0YWcyLHRhZzMgfCB0YWcgd2hpdGVsaXN0IHRvIHNlbGVjdCBnZW5lcmF0ZWQgb3BlcmF0aW9ucyB8CnwgYEVYQ0xVREVfVEFHU2AgfCBubyB8IHwgfCB0YWcxLHRhZzIsdGFnMyB8IHRhZyBibGFja2xpc3QgdG8gc2VsZWN0IGdlbmVyYXRlZCBvcGVyYXRpb25zIHwKCiMjIFJ1bm5pbmcgdGVzdHMKCmBgYGJhc2gKJCBjb21wb3NlciBpbnN0YWxsCiQgbWFrZSB0ZXN0CmBgYAoKKGNoZWNrIGBtYWtlYCBmb3IgYWxsIGF2YWlsYWJsZSByb3V0aW5lcykuCg==
+ readmeEtag: '"13048ced3d20d0bd15746eb60aadfcc1175c8dda"'
+ readmeLastModified: Thu, 22 Aug 2024 09:46:52 GMT
repositoryId: 267043092
description: >-
API client generator is a console application capable of generating an API
client based on OpenAPI(Swagger) specification.
created: '2020-05-26T12:57:31Z'
- updated: '2024-07-30T22:13:37Z'
+ updated: '2024-08-22T09:46:56Z'
language: PHP
archived: false
stars: 31
@@ -3437,8 +3437,8 @@
owner: DoclerLabs
logo: https://avatars.githubusercontent.com/u/12913135?v=4
license: MIT
- repoEtag: '"385367c2db5d80a2cf065ccb5966be7659a9b6df0e381363520661810859e67c"'
- repoLastModified: Tue, 30 Jul 2024 22:13:37 GMT
+ repoEtag: '"8b12ceeb6e108d8a86e9f2bd53a17ad1ef930c759018f118d2b5dc4b1a546b19"'
+ repoLastModified: Thu, 22 Aug 2024 09:46:56 GMT
foundInMaster: true
- source: https://openapi.tools/
name: janephp/open-api
@@ -3491,17 +3491,17 @@
repositoryId: 26726495
description: Swagger 2.0 implementation for go
created: '2014-11-16T20:13:15Z'
- updated: '2024-08-22T02:34:14Z'
+ updated: '2024-08-22T10:50:06Z'
language: Go
archived: false
- stars: 9429
+ stars: 9430
watchers: 120
forks: 1246
owner: go-swagger
logo: https://avatars.githubusercontent.com/u/10362650?v=4
license: Apache-2.0
- repoEtag: '"6bc0e56c3e1333f15d51d7318f4e5f262fea9ee1f56bdfcf18dbc2bbabb6bca9"'
- repoLastModified: Thu, 22 Aug 2024 02:34:14 GMT
+ repoEtag: '"9ed89ab74809e65936eafe35da0aff5983b537b26d35457c0e2bc6baf343f623"'
+ repoLastModified: Thu, 22 Aug 2024 10:50:06 GMT
foundInMaster: true
id: ef136df9ffb40bb33ccbd76665d8f5b4
- source: https://openapi.tools/
@@ -3594,17 +3594,17 @@
repositoryId: 41822320
description: 'The Swagger/OpenAPI toolchain for .NET, ASP.NET Core and TypeScript. '
created: '2015-09-02T19:11:57Z'
- updated: '2024-08-22T01:16:16Z'
+ updated: '2024-08-22T14:00:26Z'
language: C#
archived: false
- stars: 6668
+ stars: 6667
watchers: 164
forks: 1230
owner: RicoSuter
logo: https://avatars.githubusercontent.com/u/2603405?v=4
license: MIT
- repoEtag: '"f3e55e70745caffec249fd1fff3e57995e3eeab708d4f9a9d1f849384ed6f931"'
- repoLastModified: Thu, 22 Aug 2024 01:16:16 GMT
+ repoEtag: '"69406992efde4099e4e27c495545ee0e8b83920d25e8d8cce13e2c9ad332bba7"'
+ repoLastModified: Thu, 22 Aug 2024 14:00:26 GMT
foundInMaster: true
id: 93636e95435e95198d7d15c9d507f0d3
- source: https://openapi.tools/
@@ -3667,17 +3667,17 @@
documentation, API clients and server stubs in different languages by
parsing your OpenAPI / Swagger definition.
created: '2011-07-06T14:26:48Z'
- updated: '2024-08-21T20:54:45Z'
+ updated: '2024-08-22T13:12:00Z'
language: Mustache
archived: false
- stars: 16845
+ stars: 16846
watchers: 412
- forks: 6022
+ forks: 6021
owner: swagger-api
logo: https://avatars.githubusercontent.com/u/7658037?v=4
license: Apache-2.0
- repoEtag: '"940b968233fda290670009de0052ab04a7e3c71cfc07b895dbd71bdeee62739c"'
- repoLastModified: Wed, 21 Aug 2024 20:54:45 GMT
+ repoEtag: '"af7a9368a1962e4b4f21810806793e2ec27e14170535ef791d28143de1e41896"'
+ repoLastModified: Thu, 22 Aug 2024 13:12:00 GMT
foundInMaster: true
id: eda1e66e1b7805496e42f57851791a32
- source: https://openapi.tools/
@@ -3701,17 +3701,17 @@
OpenAPI (f.k.a Swagger) Specification code generator. Supports C#,
PowerShell, Go, Java, Node.js, TypeScript, Python
created: '2015-02-20T23:02:54Z'
- updated: '2024-08-20T21:30:27Z'
+ updated: '2024-08-22T10:55:30Z'
language: TypeScript
archived: false
- stars: 4570
- watchers: 876
+ stars: 4571
+ watchers: 877
forks: 729
owner: Azure
logo: https://avatars.githubusercontent.com/u/6844498?v=4
license: MIT
- repoEtag: '"93ffcf6740ac4a524d4f55a612187f65cbb11af2b12e09ca0ade1b06ae496a2f"'
- repoLastModified: Tue, 20 Aug 2024 21:30:27 GMT
+ repoEtag: '"e2db0f57d002f1bd2df4d915799e42d2f88220d8b47f168f0b172acf313338e8"'
+ repoLastModified: Thu, 22 Aug 2024 10:55:30 GMT
foundInMaster: true
id: 648d92bca90bf58cd74407e0bcad2936
- source: https://openapi.tools/
@@ -3777,7 +3777,7 @@
owner: readmeio
logo: https://avatars.githubusercontent.com/u/6878153?v=4
license: MIT
- repoEtag: '"260d94d974ec77a39952329845d4600536d8d18388dccaa60305b1385bcfcf86"'
+ repoEtag: '"4a269013e395bf6dae9c39c4d6d715d11601f4469a9f6415564d945a67447d96"'
repoLastModified: Mon, 12 Aug 2024 05:48:46 GMT
foundInMaster: true
id: 362a4b56c90877840a8032f920389bf6
@@ -3810,17 +3810,17 @@
repositoryId: 81140437
description: 🚀 Automatic SDK generation from an OpenAPI definition
created: '2017-02-06T22:31:07Z'
- updated: '2024-08-14T05:44:18Z'
+ updated: '2024-08-22T08:25:07Z'
language: TypeScript
archived: false
- stars: 557
+ stars: 558
watchers: 22
forks: 25
owner: readmeio
logo: https://avatars.githubusercontent.com/u/6878153?v=4
license: MIT
- repoEtag: '"3214773ffb768f8ff6d7cd677c032e0bfe98b2ff6bfb9b19d744fcb7f3d6f2c5"'
- repoLastModified: Wed, 14 Aug 2024 05:44:18 GMT
+ repoEtag: '"66893f5c098ca648ad3e3c95c38801d44874146302351789516cba6efcb04368"'
+ repoLastModified: Thu, 22 Aug 2024 08:25:07 GMT
foundInMaster: true
- source:
- https://openapi.tools/
@@ -3920,7 +3920,7 @@
repositoryId: 199614125
description: Use Jest or Chai to assert that HTTP responses satisfy an OpenAPI spec
created: '2019-07-30T08:56:01Z'
- updated: '2024-08-01T22:32:13Z'
+ updated: '2024-08-22T12:05:37Z'
language: TypeScript
archived: false
stars: 189
@@ -3929,8 +3929,8 @@
owner: openapi-library
logo: https://avatars.githubusercontent.com/u/53815441?v=4
license: MIT
- repoEtag: '"36a2ece339ab082f772df370484ea32a40e25b332066f6a962c62a4b96982369"'
- repoLastModified: Thu, 01 Aug 2024 22:32:13 GMT
+ repoEtag: '"ed82dd5962d5d13313d1ca129011819424368e711c1e3faa3fb7052c6b7f5f60"'
+ repoLastModified: Thu, 22 Aug 2024 12:05:37 GMT
foundInMaster: true
id: b5cd9eb978510085ded374f60b8e1486
- source: https://openapi.tools/
@@ -3952,7 +3952,7 @@
repositoryId: 199614125
description: Use Jest or Chai to assert that HTTP responses satisfy an OpenAPI spec
created: '2019-07-30T08:56:01Z'
- updated: '2024-08-01T22:32:13Z'
+ updated: '2024-08-22T12:05:37Z'
language: TypeScript
archived: false
stars: 189
@@ -3961,8 +3961,8 @@
owner: openapi-library
logo: https://avatars.githubusercontent.com/u/53815441?v=4
license: MIT
- repoEtag: '"36a2ece339ab082f772df370484ea32a40e25b332066f6a962c62a4b96982369"'
- repoLastModified: Thu, 01 Aug 2024 22:32:13 GMT
+ repoEtag: '"ed82dd5962d5d13313d1ca129011819424368e711c1e3faa3fb7052c6b7f5f60"'
+ repoLastModified: Thu, 22 Aug 2024 12:05:37 GMT
foundInMaster: true
id: e77dbc0bddfdcddf31c2fb1cff63cb6c
- source: https://openapi.tools/
@@ -4145,7 +4145,7 @@
owner: Endava
logo: https://avatars.githubusercontent.com/u/19396140?v=4
license: Apache-2.0
- repoEtag: '"a2fe506daa3889d016b54bebd556609ceaf5751c7c95168b118b982ebd2b1228"'
+ repoEtag: '"61d2e1752c2025f00afa203682138ef13a50897da0e390d35430916cf3be4fd4"'
repoLastModified: Tue, 20 Aug 2024 15:20:53 GMT
foundInMaster: true
- source: https://openapi.tools/
@@ -4354,7 +4354,7 @@
owner: openapi-processor
logo: https://avatars.githubusercontent.com/u/66728774?v=4
license: Apache-2.0
- repoEtag: '"026803c27c7549b01157b32809b0e04ab0d04f30125d794d1e0e0c51664cc3b4"'
+ repoEtag: '"2b25435237bfbca2270a92a4eb380ce3b1d1782aca3e656bd5b0aa778c68c57a"'
repoLastModified: Wed, 21 Aug 2024 06:44:07 GMT
foundInMaster: true
- source: https://openapi.tools/
@@ -4379,16 +4379,16 @@
repositoryId: 491304964
description: Automagically reverse-engineer REST APIs via capturing traffic
created: '2022-05-11T23:48:49Z'
- updated: '2024-08-21T18:06:59Z'
+ updated: '2024-08-22T13:07:58Z'
language: HTML
archived: false
- stars: 4986
+ stars: 4985
watchers: 21
forks: 217
owner: alufers
logo: https://avatars.githubusercontent.com/u/5400940?v=4
- repoEtag: '"fe9a9d74a68dd2e6cc64569f6be827c119729bc980106bbc224cecefc448a2aa"'
- repoLastModified: Wed, 21 Aug 2024 18:06:59 GMT
+ repoEtag: '"8e2a2d7e0d656330c661333032100246a0c5d4beaebddcede6d755154ec640ee"'
+ repoLastModified: Thu, 22 Aug 2024 13:07:58 GMT
foundInMaster: true
- source: https://openapi.tools/
name: OpenApiSpecGeneratorPlugin
@@ -4414,7 +4414,7 @@
Dev Proxy is an API simulator that helps you effortlessly test your app
beyond the happy path.
created: '2022-09-09T18:11:29Z'
- updated: '2024-08-21T06:34:58Z'
+ updated: '2024-08-22T09:24:05Z'
language: C#
archived: false
stars: 466
@@ -4423,8 +4423,8 @@
owner: microsoft
logo: https://avatars.githubusercontent.com/u/6154722?v=4
license: MIT
- repoEtag: '"2c1a47e9a5382d2dd13dcfd4a79bc92eb0cd41ef4fe1980f7c75af77bb25578f"'
- repoLastModified: Wed, 21 Aug 2024 06:34:58 GMT
+ repoEtag: '"b2854ec095a047e1e5ab8cd3e9bc38a376a3a7f643228e6dbe1994b7e07f1d54"'
+ repoLastModified: Thu, 22 Aug 2024 09:24:05 GMT
foundInMaster: true
- source: https://openapi.tools/
name: har2openapi
@@ -4527,7 +4527,7 @@
forks: 14
owner: Adawg4
logo: https://avatars.githubusercontent.com/u/27599708?v=4
- repoEtag: '"a0695891317becbcc460af1ad98f4f80922972faf0316837a690c5eb8671e070"'
+ repoEtag: '"bdf53650f22f415b7cc0b326e691f5b34d44aab0f463e585b53b0989a2983670"'
repoLastModified: Fri, 09 Aug 2024 13:17:39 GMT
category:
- Auto Generators
@@ -4594,17 +4594,17 @@
repositoryId: 381857226
description: null
created: '2021-06-30T23:29:49Z'
- updated: '2024-08-22T03:19:01Z'
+ updated: '2024-08-23T00:48:09Z'
language: TypeScript
archived: false
- stars: 4062
+ stars: 4065
watchers: 32
- forks: 188
+ forks: 187
owner: microsoft
logo: https://avatars.githubusercontent.com/u/6154722?v=4
license: MIT
- repoEtag: '"3544a0b95cc184fde06f9520d3bfda3575fb22ee8369cba5806866126a991c4f"'
- repoLastModified: Thu, 22 Aug 2024 03:19:01 GMT
+ repoEtag: '"4038f7843226323d2b16d6379be23807b0a675de8e163421f099f1d48ec196a7"'
+ repoLastModified: Fri, 23 Aug 2024 00:48:09 GMT
category:
- Auto Generators
- Server Implementations
@@ -4681,17 +4681,17 @@
Restish is a CLI for interacting with REST-ish HTTP APIs with some nice
features built-in
created: '2020-05-15T06:45:59Z'
- updated: '2024-08-21T19:18:19Z'
+ updated: '2024-08-22T22:25:58Z'
language: Go
archived: false
- stars: 736
+ stars: 737
watchers: 7
forks: 69
owner: danielgtaylor
logo: https://avatars.githubusercontent.com/u/106826?v=4
license: MIT
- repoEtag: '"700fb43c882efdf426c33f243220e8fe8b6eee98316a3b42e6bdf997c08800be"'
- repoLastModified: Wed, 21 Aug 2024 19:18:19 GMT
+ repoEtag: '"0644c0a10bd7ed7c0e6dd93f2617f1ddff68deaf33ab07c8ae5bc18e00722bc4"'
+ repoLastModified: Thu, 22 Aug 2024 22:25:58 GMT
foundInMaster: true
id: 22a8c610015b1b9d89af39221beabe66
v3_1: true
@@ -4725,7 +4725,7 @@
owner: codekie
logo: https://avatars.githubusercontent.com/u/1512840?v=4
license: MIT
- repoEtag: '"2edb86466baa907ac746ac485facab179a855d96775c41b23ab1330eedcac3c0"'
+ repoEtag: '"1e39f2aa7c54e78fbbaf890a93a621c81dd71fbcad2a685d77ac3994fe1205ea"'
repoLastModified: Thu, 01 Aug 2024 11:37:23 GMT
foundInMaster: true
id: 301e3f380f248daf345a88c8971d2a71
@@ -4825,17 +4825,17 @@
repositoryId: 633129333
description: Combination of multiple linters to install as a GitHub Action
created: '2023-04-26T21:02:26Z'
- updated: '2024-07-31T03:12:30Z'
+ updated: '2024-08-22T13:46:53Z'
language: Shell
archived: false
- stars: 96
+ stars: 97
watchers: 5
forks: 15
owner: github
logo: https://avatars.githubusercontent.com/u/9919?v=4
license: MIT
- repoEtag: '"ab7dec2f2df36e285ef7bb8327f22bf8ca6a9aba6613826d474e7f19eff18a17"'
- repoLastModified: Wed, 31 Jul 2024 03:12:30 GMT
+ repoEtag: '"8a358ef308231e313ae494161e065fa6ba9bcdf10b5034689c043c55c0d181be"'
+ repoLastModified: Thu, 22 Aug 2024 13:46:53 GMT
foundInMaster: true
id: ec6a7a1e4a69a9beeb95bdebb88cb36d
- source: https://openapi.tools/
@@ -4860,17 +4860,17 @@
repositoryId: 4238977
description: Automated JSON API documentation for API's built with Spring
created: '2012-05-06T06:38:57Z'
- updated: '2024-08-21T12:30:36Z'
+ updated: '2024-08-22T22:39:20Z'
language: Java
archived: false
- stars: 5921
+ stars: 5922
watchers: 265
- forks: 1533
+ forks: 1534
owner: springfox
logo: https://avatars.githubusercontent.com/u/11529357?v=4
license: Apache-2.0
- repoEtag: '"e49983beee063dcee74a23ed739c01dd31303e7a5f1c842f71374cdf02d071d7"'
- repoLastModified: Wed, 21 Aug 2024 12:30:36 GMT
+ repoEtag: '"61caf4e82139833fb35b886517a382db7ffed69d3fa950b27a4e599ffd0d65fc"'
+ repoLastModified: Thu, 22 Aug 2024 22:39:20 GMT
foundInMaster: true
id: 2addde4c497bf582f20025ccac2cda86
- source:
@@ -4928,17 +4928,17 @@
repositoryId: 36817565
description: The ZAP core project
created: '2015-06-03T16:55:01Z'
- updated: '2024-08-22T02:22:35Z'
+ updated: '2024-08-23T01:04:12Z'
language: Java
archived: false
- stars: 12425
+ stars: 12431
watchers: 395
- forks: 2223
+ forks: 2226
owner: zaproxy
logo: https://avatars.githubusercontent.com/u/6716868?v=4
license: Apache-2.0
- repoEtag: '"83e3ebc4665d8b45e320b83a33db4a9e6ea4b941ae52cd9576413aa902a6895d"'
- repoLastModified: Thu, 22 Aug 2024 02:22:35 GMT
+ repoEtag: '"f5f2e56d781f167a2738097aa25736ff4e71188851a44906d3ae57dd124e978a"'
+ repoLastModified: Fri, 23 Aug 2024 01:04:12 GMT
foundInMaster: true
id: 9eedc1be44837a65f912bcf562844f39
- source:
@@ -5272,17 +5272,17 @@
repositoryId: 1431547
description: Web APIs for Django. 🎸
created: '2011-03-02T17:13:56Z'
- updated: '2024-08-22T00:00:26Z'
+ updated: '2024-08-23T02:19:06Z'
language: Python
archived: false
- stars: 28036
+ stars: 28043
watchers: 622
forks: 6797
owner: encode
logo: https://avatars.githubusercontent.com/u/19159390?v=4
license: NOASSERTION
- repoEtag: '"4067318816871ab3ca8f7fe17b38a52462136935379951af0300519fbb1ff2a3"'
- repoLastModified: Thu, 22 Aug 2024 00:00:26 GMT
+ repoEtag: '"18e367b2e1c584b5430b55f4c77f89a13c39d23c5f07e565942638d4136ce858"'
+ repoLastModified: Fri, 23 Aug 2024 02:19:06 GMT
foundInMaster: true
id: fb8994c078a380cc3510b024f6ed1202
category: Server Implementations
@@ -5467,17 +5467,17 @@
repositoryId: 240776275
description: Generate modern Python clients from OpenAPI
created: '2020-02-15T19:33:46Z'
- updated: '2024-08-21T18:36:20Z'
+ updated: '2024-08-22T13:14:15Z'
language: Python
archived: false
- stars: 1232
+ stars: 1234
watchers: 14
forks: 193
owner: openapi-generators
logo: https://avatars.githubusercontent.com/u/84925606?v=4
license: MIT
- repoEtag: '"0b75dcdac6a759b096b747bd498d559492b5204864cf4ddd28c6d17cf5801b33"'
- repoLastModified: Wed, 21 Aug 2024 18:36:20 GMT
+ repoEtag: '"e8f6e5b36213a89ed4c09d77bf72e1f7da9e11e8ac30a4cfdb0857e4a5d4c1b6"'
+ repoLastModified: Thu, 22 Aug 2024 13:14:15 GMT
foundInMaster: true
id: 784ec4adac4e47e4211ea74ef36dd5a5
v3_1: true
@@ -5507,17 +5507,17 @@
Build beautiful, interactive API Docs with embeddable React or Web
Components, powered by OpenAPI and Markdown.
created: '2019-05-03T01:05:01Z'
- updated: '2024-08-21T17:39:43Z'
+ updated: '2024-08-22T17:27:18Z'
language: TypeScript
archived: false
- stars: 1684
+ stars: 1686
watchers: 18
forks: 195
owner: stoplightio
logo: https://avatars.githubusercontent.com/u/10767217?v=4
license: Apache-2.0
- repoEtag: '"f40eb9a24ca59712755f41ac5b794d47276e875ce009951c9d158e82c98e85e6"'
- repoLastModified: Wed, 21 Aug 2024 17:39:43 GMT
+ repoEtag: '"feebbd6d06b1e602245e1ab45b69cca390fa5b163dc958b78b3c9bc1aaee1151"'
+ repoLastModified: Thu, 22 Aug 2024 17:27:18 GMT
foundInMaster: true
id: 2f94cc1fc980953b17a9979d4ff2e7ec
- source:
@@ -5643,17 +5643,17 @@
undefined user behaviour by auditing your API specifications, validating
them and running API security tests.
created: '2021-11-17T07:02:22Z'
- updated: '2024-08-21T16:14:20Z'
+ updated: '2024-08-22T22:09:59Z'
language: Rust
archived: false
- stars: 1100
+ stars: 1101
watchers: 12
forks: 78
owner: blst-security
logo: https://avatars.githubusercontent.com/u/54233087?v=4
license: Apache-2.0
- repoEtag: '"1326925e90311f3d045a707962490ce4e3ebd227c8e3ed1e61744b4938116e3c"'
- repoLastModified: Wed, 21 Aug 2024 16:14:20 GMT
+ repoEtag: '"de6b3951ca3d0e44bd95cf45afbf84c51a7f1f1d3d12216da9af00b7d65563e1"'
+ repoLastModified: Thu, 22 Aug 2024 22:09:59 GMT
foundInMaster: true
name: Cherrybomb
category: Description Validators
@@ -5787,7 +5787,7 @@
repositoryId: 108694147
description: Build your OpenApi3 spec in kotlin!
created: '2017-10-29T00:33:35Z'
- updated: '2024-08-15T15:08:07Z'
+ updated: '2024-08-22T14:52:32Z'
language: Kotlin
archived: false
stars: 65
@@ -5796,8 +5796,8 @@
owner: derveloper
logo: https://avatars.githubusercontent.com/u/18556?v=4
license: Apache-2.0
- repoEtag: '"2d5815e1698cab9ae8f6591b1738180bcd8ad3368fc28687ffafdb5799b3e605"'
- repoLastModified: Thu, 15 Aug 2024 15:08:07 GMT
+ repoEtag: '"f5204b0ca1eefd83a2805287a483b278932511ddf0709933c41019a59b1e7832"'
+ repoLastModified: Thu, 22 Aug 2024 14:52:32 GMT
foundInMaster: true
- source:
- https://openapi.tools/
@@ -5919,7 +5919,7 @@
repositoryId: 479515560
description: OpenAPI / Swagger to TypeScript generator and mock server
created: '2022-04-08T19:32:15Z'
- updated: '2024-08-20T13:09:08Z'
+ updated: '2024-08-22T15:52:36Z'
language: TypeScript
archived: false
stars: 96
@@ -5928,8 +5928,8 @@
owner: pmcelhaney
logo: https://avatars.githubusercontent.com/u/51504?v=4
license: MIT
- repoEtag: '"1a168c6b2f764943fc11a2e84428854aa1724b63bec88d3617371558160bdf5d"'
- repoLastModified: Tue, 20 Aug 2024 13:09:08 GMT
+ repoEtag: '"db4be758ff25c4d1b42b9c8d4e2b721adc1433e09b8e5584e41b02b6234e90ec"'
+ repoLastModified: Thu, 22 Aug 2024 15:52:36 GMT
category:
- Mock
- SDK
@@ -6077,17 +6077,17 @@
libopenapi is a fully featured, high performance OpenAPI 3.1, 3.0 and
Swagger parser, library, validator and toolkit for golang applications.
created: '2022-07-17T19:41:10Z'
- updated: '2024-08-21T12:35:58Z'
+ updated: '2024-08-22T13:15:15Z'
language: Go
archived: false
- stars: 411
+ stars: 414
watchers: 7
- forks: 53
+ forks: 54
owner: pb33f
logo: https://avatars.githubusercontent.com/u/104016643?v=4
license: NOASSERTION
- repoEtag: '"1faf1d530e635cd390923ecf97c143072fda1101a47783f82adac3b7d597eb94"'
- repoLastModified: Wed, 21 Aug 2024 12:35:58 GMT
+ repoEtag: '"e5659820ed93e4e871a99502be4c4dc955f2d95ba9e8409f1eed65be51aa4fd9"'
+ repoLastModified: Thu, 22 Aug 2024 13:15:15 GMT
category: Parsers
foundInMaster: true
name: libopenapi
@@ -6270,11 +6270,11 @@
archived: false
stars: 25
watchers: 8
- forks: 5
+ forks: 6
owner: criteo
logo: https://avatars.githubusercontent.com/u/1713646?v=4
license: Apache-2.0
- repoEtag: '"8c6a6758bdebcfae1fee053ac26f43e6062daf146881bab754641586e633701f"'
+ repoEtag: '"40a9da4df9a429fa7b8a7e9f91a3414b298f37f813239b33d1b30ecc6f01559c"'
repoLastModified: Thu, 18 Jul 2024 08:39:29 GMT
foundInMaster: true
category: Parsers
@@ -6382,7 +6382,7 @@
Development - Collaboratively Design & Independently Deploy MicroServices
& MicroFrontends.
created: '2020-03-16T13:33:07Z'
- updated: '2024-08-21T12:16:11Z'
+ updated: '2024-08-22T09:48:22Z'
language: Kotlin
archived: false
stars: 258
@@ -6391,8 +6391,8 @@
owner: znsio
logo: https://avatars.githubusercontent.com/u/75619722?v=4
license: MIT
- repoEtag: '"185de0d7e018ba0b81105a5bcb817e35bc45fd8debd85a889923037c5a250266"'
- repoLastModified: Wed, 21 Aug 2024 12:16:11 GMT
+ repoEtag: '"371cc1849292a3ddb9a90f78f4efae7babb159dee8c4034d79f175f53aa21de7"'
+ repoLastModified: Thu, 22 Aug 2024 09:48:22 GMT
foundInMaster: true
- source:
- https://openapi.tools/
@@ -6578,7 +6578,7 @@
owner: gcatanese
logo: https://avatars.githubusercontent.com/u/1771700?v=4
license: Apache-2.0
- repoEtag: '"6a38ae7ebf1bc528ea11fae02e94dd2e86456bde212f4472eaae60849a58019f"'
+ repoEtag: '"ebd8b68c04e8af213e0409b4a96312194797e57a5f3bfa1a811e0b716829383c"'
repoLastModified: Sat, 06 Jul 2024 15:11:20 GMT
foundInMaster: true
- source: https://openapi.tools/
@@ -6786,17 +6786,17 @@
repositoryId: 476820102
description: Input OpenAPI. Output SDKs and Docs.
created: '2022-04-01T17:56:54Z'
- updated: '2024-08-22T02:57:46Z'
+ updated: '2024-08-23T02:11:46Z'
language: TypeScript
archived: false
- stars: 2537
+ stars: 2538
watchers: 18
forks: 129
owner: fern-api
logo: https://avatars.githubusercontent.com/u/102944815?v=4
license: MIT
- repoEtag: '"25952f3094982b09a9ab5fe388cbf5611b10e439e68ae8864af82c3e4b019376"'
- repoLastModified: Thu, 22 Aug 2024 02:57:46 GMT
+ repoEtag: '"d946010ab6fd74d320e063baf29ce873a77bdc5db2f993501c5d74742c4611ae"'
+ repoLastModified: Fri, 23 Aug 2024 02:11:46 GMT
foundInMaster: true
sponsored: true
testimonial: >
@@ -6900,17 +6900,17 @@
repositoryId: 630566794
description: Generate Swift client and server code from an OpenAPI document.
created: '2023-04-20T16:50:53Z'
- updated: '2024-08-21T08:40:37Z'
+ updated: '2024-08-23T02:53:22Z'
language: Swift
archived: false
- stars: 1335
- watchers: 106
+ stars: 1336
+ watchers: 105
forks: 98
owner: apple
logo: https://avatars.githubusercontent.com/u/10639145?v=4
license: Apache-2.0
- repoEtag: '"498033f42385d890375bf6fdccaecf9275e6ce022b3a1d4621deee93287868d4"'
- repoLastModified: Wed, 21 Aug 2024 08:40:37 GMT
+ repoEtag: '"90bc175b37a2d7d429e3fa09a71b8ff844f4763ebac01a2bab1b5ecbb6dbd785"'
+ repoLastModified: Fri, 23 Aug 2024 02:53:22 GMT
foundInMaster: true
- source:
- https://openapi.tools/
@@ -7138,17 +7138,17 @@
repositoryId: 706256859
description: Golang Fuego - web framework generating OpenAPI 3 spec from source code
created: '2023-10-17T15:36:43Z'
- updated: '2024-08-22T01:32:22Z'
+ updated: '2024-08-22T23:20:11Z'
language: Go
archived: false
- stars: 744
+ stars: 747
watchers: 6
forks: 33
owner: go-fuego
logo: https://avatars.githubusercontent.com/u/148255240?v=4
license: MIT
- repoEtag: '"7cefb4616da32b20fd13c3b809120af3d8b4897079297c31f7de632b96808eab"'
- repoLastModified: Thu, 22 Aug 2024 01:32:22 GMT
+ repoEtag: '"42cdfe6184e20d57f3c9261255160f16758bc38244824433efc825ef528e2770"'
+ repoLastModified: Thu, 22 Aug 2024 23:20:11 GMT
foundInMaster: true
- source:
- https://openapi.tools/
@@ -7164,17 +7164,17 @@
repositoryId: 245763170
description: Huma REST/HTTP API Framework for Golang with OpenAPI 3.1
created: '2020-03-08T06:19:51Z'
- updated: '2024-08-21T20:54:33Z'
+ updated: '2024-08-22T16:28:48Z'
language: Go
archived: false
- stars: 1798
+ stars: 1804
watchers: 28
- forks: 138
+ forks: 139
owner: danielgtaylor
logo: https://avatars.githubusercontent.com/u/106826?v=4
license: MIT
- repoEtag: '"63fdba7e01cbd9151c30b4aa3f0a41f8ebcb3b49304d50cbf5d3342b878e6825"'
- repoLastModified: Wed, 21 Aug 2024 20:54:33 GMT
+ repoEtag: '"feb95517a7a624db57a8f8c76b183e0d0521e3aede99f547c68b14a88d1c39df"'
+ repoLastModified: Thu, 22 Aug 2024 16:28:48 GMT
foundInMaster: true
category:
- Auto Generators
@@ -7214,17 +7214,17 @@
Merge multiple OpenAPI 3.0 (Swagger) files together via a library or CLI
tool.
created: '2021-05-23T02:23:17Z'
- updated: '2024-08-19T14:53:08Z'
+ updated: '2024-08-22T13:12:47Z'
language: TypeScript
archived: false
- stars: 127
+ stars: 128
watchers: 4
forks: 25
owner: robertmassaioli
logo: https://avatars.githubusercontent.com/u/149178?v=4
license: MIT
- repoEtag: '"b514b8b7a969567e8d74509625fdd6f895886b346afd42804b162b23dccfea86"'
- repoLastModified: Mon, 19 Aug 2024 14:53:08 GMT
+ repoEtag: '"b7df733c61bdb08346bdc4016698e65612bb7fc0cf29a5333ce9a130d743e3d6"'
+ repoLastModified: Thu, 22 Aug 2024 13:12:47 GMT
foundInMaster: true
- source: https://openapi.tools/
name: OpenAPI::Modern
@@ -7291,7 +7291,7 @@
owner: OpenAPI-Qraft
logo: https://avatars.githubusercontent.com/u/159651230?v=4
license: MIT
- repoEtag: '"7c843cd1157bd27451fa316324b269fc57e922d10a308d345ed467ec80e3ddba"'
+ repoEtag: '"a20b4059d46657428c21d54cac3fb64ae03d1c821b530c8610be4100b810b7ee"'
repoLastModified: Wed, 21 Aug 2024 15:09:27 GMT
foundInMaster: true
- source: https://openapi.tools/
@@ -7346,7 +7346,7 @@
OpenAPI / Swagger, AsyncAPI & Semoasa definitions to (re)Slate compatible
markdown
created: '2016-10-05T23:09:13Z'
- updated: '2024-08-21T13:17:32Z'
+ updated: '2024-08-22T10:54:03Z'
language: JavaScript
archived: false
stars: 1477
@@ -7355,8 +7355,8 @@
owner: Mermade
logo: https://avatars.githubusercontent.com/u/15950345?v=4
license: MIT
- repoEtag: '"15e4f3f27eb266189c264c7bf72dc0e07818ad24e010a1afd05ee42f8d9ede8a"'
- repoLastModified: Wed, 21 Aug 2024 13:17:32 GMT
+ repoEtag: '"40c1c1be69fc6e01ae409b4f1c71b925fe7bf1a55fcb74f8ac40d11374f567c4"'
+ repoLastModified: Thu, 22 Aug 2024 10:54:03 GMT
foundInMaster: true
homepage: https://github.com/Mermade/widdershins
id: ab4fb414065011325683c7b582a9e582
@@ -7380,17 +7380,17 @@
FastAPI framework, high performance, easy to learn, fast to code, ready
for production
created: '2018-12-08T08:21:47Z'
- updated: '2024-08-22T03:28:53Z'
+ updated: '2024-08-23T02:53:43Z'
language: Python
archived: false
- stars: 74838
+ stars: 74872
watchers: 668
- forks: 6298
+ forks: 6297
owner: fastapi
logo: https://avatars.githubusercontent.com/u/156354296?v=4
license: MIT
- repoEtag: '"f59a20e3f574c0966c7c8727ec4b1620ff9f4bacb21b34501015a472f3c3f7c1"'
- repoLastModified: Thu, 22 Aug 2024 03:28:53 GMT
+ repoEtag: '"70f97fcf5cedd3c15bd5778ca02d9cd52eceefa941f9a547ef212ac037b2c018"'
+ repoLastModified: Fri, 23 Aug 2024 02:53:43 GMT
foundInMaster: true
id: 01f8d446752c39de698f67e8d2352229
oldLocations:
@@ -7410,17 +7410,17 @@
Swagger UI is a collection of HTML, JavaScript, and CSS assets that
dynamically generate beautiful documentation from a Swagger-compliant API.
created: '2011-07-15T22:56:39Z'
- updated: '2024-08-22T03:18:06Z'
+ updated: '2024-08-23T01:28:24Z'
language: JavaScript
archived: false
- stars: 26224
+ stars: 26226
watchers: 650
- forks: 8900
+ forks: 8901
owner: swagger-api
logo: https://avatars.githubusercontent.com/u/7658037?v=4
license: Apache-2.0
- repoEtag: '"8f577992606b4f9f4cc4e7d9ff39b66f63b33e29e2f6ea539097d63a53c43d96"'
- repoLastModified: Thu, 22 Aug 2024 03:18:06 GMT
+ repoEtag: '"929b01f079cb31c9abbc76b5fd81efa3ec26a8b54e615e3170476c23be611a3b"'
+ repoLastModified: Fri, 23 Aug 2024 01:28:24 GMT
foundInMaster: true
name: swagger-ui
homepage: https://github.com/swagger-api/swagger-UI
@@ -7453,17 +7453,17 @@
repositoryId: 45250726
description: 📘 OpenAPI/Swagger-generated API Reference Documentation
created: '2015-10-30T12:53:02Z'
- updated: '2024-08-22T01:27:04Z'
+ updated: '2024-08-23T03:18:45Z'
language: TypeScript
archived: false
- stars: 23176
+ stars: 23182
watchers: 294
forks: 2280
owner: Redocly
logo: https://avatars.githubusercontent.com/u/32099856?v=4
license: MIT
- repoEtag: '"00fd7f309506da74e22119b14811a015015535cb6138182a4716ba94f5c38aa1"'
- repoLastModified: Thu, 22 Aug 2024 01:27:04 GMT
+ repoEtag: '"beafb2953ab8a05bb2d1e02ca904e2027d8e377cece1a83c77858f209f94496a"'
+ repoLastModified: Fri, 23 Aug 2024 03:18:45 GMT
foundInMaster: true
v3_1: true
id: 2725d6db6977c1dd12ceaf9701787e07
@@ -7482,17 +7482,17 @@
Examples and server integrations for generating the Swagger API
Specification, which enables easy access to your REST API
created: '2011-07-05T23:44:11Z'
- updated: '2024-08-21T12:41:56Z'
+ updated: '2024-08-22T20:58:00Z'
language: Java
archived: false
- stars: 7372
+ stars: 7371
watchers: 310
forks: 2170
owner: swagger-api
logo: https://avatars.githubusercontent.com/u/7658037?v=4
license: Apache-2.0
- repoEtag: '"b88dcc2f9d45e540eee1330290a66ac4a5750b63086bd323d4d1ecbb3e02d201"'
- repoLastModified: Wed, 21 Aug 2024 12:41:56 GMT
+ repoEtag: '"f63ee7e4d49143df82df25f110ff28b87499b02966f1d9506c2f2e683f30425d"'
+ repoLastModified: Thu, 22 Aug 2024 20:58:00 GMT
foundInMaster: true
category: Code Generators
id: 2093f5c5f56617123b73ae823791176d
@@ -7509,17 +7509,17 @@
Mockoon is the easiest and quickest way to run mock APIs locally. No
remote deployment, no account required, open source.
created: '2017-07-17T13:19:16Z'
- updated: '2024-08-21T14:31:50Z'
+ updated: '2024-08-22T18:13:14Z'
language: TypeScript
archived: false
- stars: 6196
+ stars: 6200
watchers: 60
forks: 362
owner: mockoon
logo: https://avatars.githubusercontent.com/u/49429147?v=4
license: NOASSERTION
- repoEtag: '"5088e580b4a1a1e5c8d2b81ccdc8a31492fca4fc250334bf1b6c362afb21c23b"'
- repoLastModified: Wed, 21 Aug 2024 14:31:50 GMT
+ repoEtag: '"7addd689b20966aeb62abc6aa78faccaf7bae7fa3d5c6ab1d443240cd68f40ab"'
+ repoLastModified: Thu, 22 Aug 2024 18:13:14 GMT
foundInMaster: true
category: Testing
id: 8728dfca2c1908dbecdcddd31597fad4
@@ -7542,17 +7542,17 @@
repositoryId: 173009358
description: Generate Go client and server boilerplate from OpenAPI 3 specifications
created: '2019-02-27T23:59:59Z'
- updated: '2024-08-21T22:24:46Z'
+ updated: '2024-08-23T03:26:20Z'
language: Go
archived: false
- stars: 5813
- watchers: 37
+ stars: 5821
+ watchers: 36
forks: 828
owner: oapi-codegen
logo: https://avatars.githubusercontent.com/u/142752710?v=4
license: Apache-2.0
- repoEtag: '"8b7f421578329d56e488c156e3ca7e197d3f32913c453fde1ff14cedb3966f11"'
- repoLastModified: Wed, 21 Aug 2024 22:24:46 GMT
+ repoEtag: '"b2b2ed94dce7f3a0cf76bf397886352513b5ed5a4d596433643c687cb4711343"'
+ repoLastModified: Fri, 23 Aug 2024 03:26:20 GMT
foundInMaster: true
id: 770a221110cc4ef0e399089f5caf8694
oldLocations:
@@ -7581,17 +7581,17 @@
repositoryId: 161691324
description: Generate TypeScript types from OpenAPI 3 specs
created: '2018-12-13T20:28:01Z'
- updated: '2024-08-22T03:14:14Z'
+ updated: '2024-08-23T03:17:03Z'
language: TypeScript
archived: false
- stars: 5369
+ stars: 5377
watchers: 24
- forks: 444
+ forks: 445
owner: openapi-ts
logo: https://avatars.githubusercontent.com/u/172838200?v=4
license: MIT
- repoEtag: '"66a792ee3cf6465c1ec6b49875308215167d25234d238a8507142be9f7f21d4a"'
- repoLastModified: Thu, 22 Aug 2024 03:14:14 GMT
+ repoEtag: '"f80e685e8313e71c03b1cd6cc02bd16ef2febeac525816afadb02d3aae9ee3ff"'
+ repoLastModified: Fri, 23 Aug 2024 03:17:03 GMT
foundInMaster: true
oldLocations:
- https://github.com/drwpow/openapi-typescript
@@ -7607,17 +7607,17 @@
repositoryId: 88701696
description: Knife4j is a set of Swagger2 and OpenAPI3 All-in-one enhancement solution
created: '2017-04-19T04:44:28Z'
- updated: '2024-08-21T12:40:15Z'
+ updated: '2024-08-23T01:58:44Z'
language: HTML
archived: false
- stars: 4039
+ stars: 4042
watchers: 75
- forks: 612
+ forks: 613
owner: xiaoymin
logo: https://avatars.githubusercontent.com/u/7894406?v=4
license: Apache-2.0
- repoEtag: '"031dcb8b17ba7af214e2fb9ccd926f106c06918fb2abf4cf254f8c53bc046d67"'
- repoLastModified: Wed, 21 Aug 2024 12:40:15 GMT
+ repoEtag: '"52dd391aaca6541be44d346a7230ea2543d3e486a74247bdd9d0f2fa82490eaa"'
+ repoLastModified: Fri, 23 Aug 2024 01:58:44 GMT
category: SDK
foundInMaster: true
- source: openapi3 tags
@@ -7633,17 +7633,17 @@
🌐 Wikipedia for Web APIs. Directory of REST API definitions in OpenAPI
2.0/3.x format
created: '2015-02-22T19:58:12Z'
- updated: '2024-08-21T08:47:53Z'
+ updated: '2024-08-22T12:47:44Z'
language: null
archived: false
- stars: 3811
+ stars: 3812
watchers: 113
forks: 570
owner: APIs-guru
logo: https://avatars.githubusercontent.com/u/10975548?v=4
license: CC0-1.0
- repoEtag: '"51aae8efed4a77b1e15d1f10202f6915c0caebce3736b7509a98710a13504d26"'
- repoLastModified: Wed, 21 Aug 2024 08:47:53 GMT
+ repoEtag: '"61b40b702115f547cdf0b54453d3ff6dfb0f2351df270dc38ffdd884103b336e"'
+ repoLastModified: Thu, 22 Aug 2024 12:47:44 GMT
foundInMaster: true
category: SDK
id: 667f2aef78d9d19418fbd6c0a7835abb
@@ -7676,7 +7676,7 @@
owner: springdoc
logo: https://avatars.githubusercontent.com/u/52804136?v=4
license: Apache-2.0
- repoEtag: '"bfb48546ea712eb7ff84c97d1927e2b80ce3ffd54dc0a5a93314a459bd09d35d"'
+ repoEtag: '"917ce5c9c0e288e8d742dd9048d4ec4017862648886a5b2d372989640c0ada50"'
repoLastModified: Tue, 20 Aug 2024 12:22:36 GMT
foundInMaster: true
id: 901410cec129651fcf7374c79f824f27
@@ -7722,17 +7722,17 @@
Javascript library to connect to swagger-enabled APIs via browser or
nodejs
created: '2012-02-16T00:08:43Z'
- updated: '2024-08-20T23:06:53Z'
+ updated: '2024-08-22T23:50:28Z'
language: JavaScript
archived: false
- stars: 2606
+ stars: 2607
watchers: 97
forks: 758
owner: swagger-api
logo: https://avatars.githubusercontent.com/u/7658037?v=4
license: Apache-2.0
- repoEtag: '"7914aa507ad09bcc4b4fe948c28514f874e00b039471b7caf9b9266bb4581580"'
- repoLastModified: Tue, 20 Aug 2024 23:06:53 GMT
+ repoEtag: '"32084a1b2bce99a20015ae589053f97a9c80febfbb8032cc4f1f16ce6893ee2b"'
+ repoLastModified: Thu, 22 Aug 2024 23:50:28 GMT
foundInMaster: true
category: Code Generators
id: 5f98b79464c0723b688cff46ee3500c6
@@ -7757,7 +7757,7 @@
owner: tfranzel
logo: https://avatars.githubusercontent.com/u/13507857?v=4
license: BSD-3-Clause
- repoEtag: '"5257892412c9e2d6e2780fbf31fc7fe2d4aa77aa4fc58de27fe65324f4a9e48e"'
+ repoEtag: '"d7b7f08478cd004abbf7e345d9b8d034b787f0f082a01dab6214322c5346b942"'
repoLastModified: Wed, 21 Aug 2024 22:53:31 GMT
foundInMaster: true
category: Server Implementations
@@ -7782,17 +7782,17 @@
repositoryId: 203157084
description: Supercharge your API testing, catch bugs, and ensure compliance
created: '2019-08-19T11:13:01Z'
- updated: '2024-08-21T14:33:04Z'
+ updated: '2024-08-22T19:25:16Z'
language: Python
archived: false
- stars: 2217
+ stars: 2218
watchers: 20
forks: 153
owner: schemathesis
logo: https://avatars.githubusercontent.com/u/70383271?v=4
license: MIT
- repoEtag: '"af2799192e998f1bb7742aaa24a8f9430f49e0ce73500837ddd998bf202bb2af"'
- repoLastModified: Wed, 21 Aug 2024 14:33:04 GMT
+ repoEtag: '"5ba3ac487f3bd90704c84cccf23a7c61c89c012a398b979bb8ca7eebd68250d2"'
+ repoLastModified: Thu, 22 Aug 2024 19:25:16 GMT
foundInMaster: true
id: f4032fb371a703acffa691c0f1239d45
oldLocations:
@@ -7811,17 +7811,17 @@
A fast serialization and validation library, with builtin support for
JSON, MessagePack, YAML, and TOML
created: '2021-01-26T02:53:57Z'
- updated: '2024-08-21T23:10:23Z'
+ updated: '2024-08-23T00:47:52Z'
language: Python
archived: false
- stars: 2193
+ stars: 2196
watchers: 19
- forks: 62
+ forks: 63
owner: jcrist
logo: https://avatars.githubusercontent.com/u/2783717?v=4
license: BSD-3-Clause
- repoEtag: '"f9fa9af9b431f04c70daaff4028104aedce57e8c73ffa882ed97039f47f0a5d7"'
- repoLastModified: Wed, 21 Aug 2024 23:10:23 GMT
+ repoEtag: '"76f5a342891ddc6824c45f0c4f1f15664368b1e8c5cb325bbef259bea90e5d79"'
+ repoLastModified: Fri, 23 Aug 2024 00:47:52 GMT
category: Server Implementations
foundInMaster: true
- source: openapi3 tags
@@ -7837,17 +7837,17 @@
A compiler for APIs described by the OpenAPI Specification with plugins
for code generation and other API support tasks.
created: '2016-11-15T19:21:53Z'
- updated: '2024-08-20T05:59:13Z'
+ updated: '2024-08-23T03:28:33Z'
language: Go
archived: false
- stars: 2060
+ stars: 2061
watchers: 38
forks: 242
owner: google
logo: https://avatars.githubusercontent.com/u/1342004?v=4
license: Apache-2.0
- repoEtag: '"c6ac05581804a8b4565eb3bb2d038e100fbf074dcb27ea9a6a6d1e34a4ba8c39"'
- repoLastModified: Tue, 20 Aug 2024 05:59:13 GMT
+ repoEtag: '"afffc247f7a588049a40934738e8c49b465359204e53ff80580506ff9f95eddf"'
+ repoLastModified: Fri, 23 Aug 2024 03:28:33 GMT
foundInMaster: true
category: Converters
id: 46e070512676eb0fd196ee199e6a0b34
@@ -7864,17 +7864,17 @@
repositoryId: 165951750
description: RapiDoc -WebComponent for OpenAPI Spec
created: '2019-01-16T01:29:58Z'
- updated: '2024-08-21T11:26:49Z'
+ updated: '2024-08-22T06:44:48Z'
language: JavaScript
archived: false
- stars: 1641
+ stars: 1642
watchers: 14
forks: 271
owner: rapi-doc
logo: https://avatars.githubusercontent.com/u/104180085?v=4
license: MIT
- repoEtag: '"af10fc55e6dfa26edf4b4e804a86c16676df8c1c2c71ef88d006f0b418bd995c"'
- repoLastModified: Wed, 21 Aug 2024 11:26:49 GMT
+ repoEtag: '"8cbb70579a17d9f765a9c6c3d43b6444e1d33519255de53da23302d8881cb1c9"'
+ repoLastModified: Thu, 22 Aug 2024 06:44:48 GMT
foundInMaster: true
category:
- Documentation
@@ -7900,17 +7900,17 @@
repositoryId: 71986592
description: GUI / visual editor for creating and editing OpenAPI / Swagger definitions
created: '2016-10-26T09:15:55Z'
- updated: '2024-08-20T13:45:17Z'
+ updated: '2024-08-22T14:43:10Z'
language: JavaScript
archived: false
- stars: 1399
+ stars: 1401
watchers: 42
forks: 169
owner: Mermade
logo: https://avatars.githubusercontent.com/u/15950345?v=4
license: MIT
- repoEtag: '"90cc3e0a9bda806cfe7f9ee135ffbe5757c9a0ee37946f9021c834745d79e203"'
- repoLastModified: Tue, 20 Aug 2024 13:45:17 GMT
+ repoEtag: '"4ec6ba0d51d0acf0f9a5acc23514d97ac346c0c2c557807c92f93c707fbc81b0"'
+ repoLastModified: Thu, 22 Aug 2024 14:43:10 GMT
foundInMaster: true
id: 71f1a528dc0a6366fb580d1b8c703ea8
- source: openapi3 tags
@@ -7954,17 +7954,17 @@
repositoryId: 372032505
description: OpenAPI v3 code generator for go
created: '2021-05-29T17:25:48Z'
- updated: '2024-08-21T15:04:16Z'
+ updated: '2024-08-23T03:09:59Z'
language: Go
archived: false
- stars: 1257
+ stars: 1260
watchers: 16
forks: 74
owner: ogen-go
logo: https://avatars.githubusercontent.com/u/85122432?v=4
license: Apache-2.0
- repoEtag: '"0dce19728722df4b0dc0b075b443f9db988d8fc44a41463ce636940e9a957365"'
- repoLastModified: Wed, 21 Aug 2024 15:04:16 GMT
+ repoEtag: '"ce2acb5d6b78ea4e0a9ad83a90dd5628f69b914ae699598ae48cc172277127cf"'
+ repoLastModified: Fri, 23 Aug 2024 03:09:59 GMT
category: Parsers
foundInMaster: true
- source: openapi3 tags
@@ -8033,17 +8033,17 @@
repositoryId: 481579846
description: A library that generates OpenAPI (Swagger) docs from Zod schemas
created: '2022-04-14T11:32:57Z'
- updated: '2024-08-21T15:53:01Z'
+ updated: '2024-08-22T15:14:38Z'
language: TypeScript
archived: false
- stars: 868
+ stars: 870
watchers: 10
forks: 55
owner: asteasolutions
logo: https://avatars.githubusercontent.com/u/5244095?v=4
license: MIT
- repoEtag: '"4762ea685fd996ed69ca70317d64b99732d5ad917807caabb42272d63896b0cd"'
- repoLastModified: Wed, 21 Aug 2024 15:53:01 GMT
+ repoEtag: '"2ca77965cb57f7ed15b775c1f4f02bb5fb3845c026e161abfa3b3e2b9d9ab125"'
+ repoLastModified: Thu, 22 Aug 2024 15:14:38 GMT
category: Parsers
foundInMaster: true
- source: openapi3 tags
@@ -8058,17 +8058,17 @@
repositoryId: 741524414
description: ✨ Turn your OpenAPI specification into a beautiful TypeScript client
created: '2024-01-10T15:19:25Z'
- updated: '2024-08-21T17:37:54Z'
+ updated: '2024-08-23T01:16:11Z'
language: TypeScript
archived: false
- stars: 889
+ stars: 894
watchers: 6
forks: 69
owner: hey-api
logo: https://avatars.githubusercontent.com/u/164436240?v=4
license: MIT
- repoEtag: '"bdd9c2ebb29af04b931c11fe5aff0b097313906f8f0350852e303531d29b611a"'
- repoLastModified: Wed, 21 Aug 2024 17:37:54 GMT
+ repoEtag: '"6f5a434de56bd96d9fc3c871b37d4418eada07ff835817f911770e870e22cad4"'
+ repoLastModified: Fri, 23 Aug 2024 01:16:11 GMT
category: SDK
foundInMaster: true
- source: openapi3 tags
@@ -8084,17 +8084,17 @@
A fast Java JSON schema validator that supports draft V4, V6, V7, V2019-09
and V2020-12
created: '2016-09-15T12:24:16Z'
- updated: '2024-08-14T16:17:32Z'
+ updated: '2024-08-22T12:50:07Z'
language: Java
archived: false
- stars: 818
+ stars: 820
watchers: 43
forks: 322
owner: networknt
logo: https://avatars.githubusercontent.com/u/8740739?v=4
license: Apache-2.0
- repoEtag: '"8adfc680510621d5f36aced589fb6774af4b3eeb3dba8b64b0b1066848570df9"'
- repoLastModified: Wed, 14 Aug 2024 16:17:32 GMT
+ repoEtag: '"dfdfa9f5e22bf3737100016c254f40dfa2dbc6687a02b7c428beb6abb451738d"'
+ repoLastModified: Thu, 22 Aug 2024 12:50:07 GMT
foundInMaster: true
category: Parsers
id: 69c6f349899d198b4045edb7ffa3fb74
@@ -8109,17 +8109,17 @@
repositoryId: 113924383
description: Utility for comparing two OpenAPI specifications.
created: '2017-12-12T00:39:30Z'
- updated: '2024-08-21T18:20:30Z'
+ updated: '2024-08-22T10:23:12Z'
language: Java
archived: false
- stars: 799
+ stars: 800
watchers: 20
forks: 154
owner: OpenAPITools
logo: https://avatars.githubusercontent.com/u/37325267?v=4
license: Apache-2.0
- repoEtag: '"0c164afcd52a5b0a3514e2be39332e8c7a4cb43e6f2d2a9a6098c26dc832fa73"'
- repoLastModified: Wed, 21 Aug 2024 18:20:30 GMT
+ repoEtag: '"ba04474cd407654ae52ff576fa2db91498c170740b9ec2485cb72c0222111815"'
+ repoLastModified: Thu, 22 Aug 2024 10:23:12 GMT
foundInMaster: true
category: Parsers
id: c128907e9d949a67c1bda0e0ceda755a
@@ -8136,17 +8136,17 @@
repositoryId: 192797744
description: The modern editor for API Design and Technical Writing.
created: '2019-06-19T20:09:49Z'
- updated: '2024-08-21T14:15:12Z'
+ updated: '2024-08-22T07:33:23Z'
language: null
archived: false
- stars: 796
+ stars: 797
watchers: 30
forks: 50
owner: stoplightio
logo: https://avatars.githubusercontent.com/u/10767217?v=4
license: NOASSERTION
- repoEtag: '"108423d9fa33a2eafd671684f8992fcefbeb1b62745feabb81dbd2871bdfcb3b"'
- repoLastModified: Wed, 21 Aug 2024 14:15:12 GMT
+ repoEtag: '"1a5496581e31a9428860357a1497a59ed9e417fd7459714128960926597bcb1c"'
+ repoLastModified: Thu, 22 Aug 2024 07:33:23 GMT
foundInMaster: true
category:
- Description Validators
@@ -8268,17 +8268,17 @@
A collection of Editors, Linters, Parsers, Code Generators,
Documentation, Testing
created: '2017-12-15T22:51:00Z'
- updated: '2024-08-16T05:14:24Z'
+ updated: '2024-08-22T13:16:51Z'
language: HTML
archived: false
- stars: 662
+ stars: 663
watchers: 30
forks: 315
owner: apisyouwonthate
logo: https://avatars.githubusercontent.com/u/35378327?v=4
license: MIT
- repoEtag: '"93cc1bb5e39d2512b4b762523e0a1abd891355776c7e098c96333325080dee67"'
- repoLastModified: Fri, 16 Aug 2024 05:14:24 GMT
+ repoEtag: '"8cc11f772c04b61c8c644431cf80c2434ee861234b191d10cbc1008bc5bef758"'
+ repoLastModified: Thu, 22 Aug 2024 13:16:51 GMT
foundInMaster: true
category: Description Validators
id: bf8b6a3a6298d701eabc857d42d5c371
@@ -8325,17 +8325,17 @@
repositoryId: 766082951
description: Terminal UI to list, browse and run APIs defined with openapi spec.
created: '2024-03-02T09:42:10Z'
- updated: '2024-08-20T10:36:51Z'
+ updated: '2024-08-22T08:46:44Z'
language: Rust
archived: false
- stars: 609
+ stars: 611
watchers: 5
forks: 15
owner: zaghaghi
logo: https://avatars.githubusercontent.com/u/111259?v=4
license: MIT
- repoEtag: '"138bb487e186860421640087708b311ba07033c1f1a466c905ed448c329c2948"'
- repoLastModified: Tue, 20 Aug 2024 10:36:51 GMT
+ repoEtag: '"75763ea6c5b6ee6a0f406f4c333b205a18ff0c52cbaf7e6d5f2b1cd5f124f29b"'
+ repoLastModified: Thu, 22 Aug 2024 08:46:44 GMT
category: Parsers
foundInMaster: true
- source: openapi3 tags
@@ -8480,16 +8480,16 @@
repositoryId: 417437020
description: A tool for generating code base on an OpenAPI schema.
created: '2021-10-15T09:08:51Z'
- updated: '2024-08-22T03:08:31Z'
+ updated: '2024-08-22T21:37:27Z'
language: TypeScript
archived: false
- stars: 485
+ stars: 486
watchers: 6
forks: 61
owner: fabien0102
logo: https://avatars.githubusercontent.com/u/1761469?v=4
- repoEtag: '"6310f9500bceb7a0f4d0ab8e556926c46b5ab36893ef1b6faba64fed4dc245e3"'
- repoLastModified: Thu, 22 Aug 2024 03:08:31 GMT
+ repoEtag: '"612700860b169f5307424152b40ca441ebc018acaf2efbef06f3ee5d11e4ce95"'
+ repoLastModified: Thu, 22 Aug 2024 21:37:27 GMT
category: Testing
foundInMaster: true
- source: openapi3 tags
@@ -8536,17 +8536,17 @@
response status codes and parameters. At the end, it generates the .json
file containing the Swagger format specification.
created: '2020-04-13T01:37:33Z'
- updated: '2024-08-21T23:54:35Z'
+ updated: '2024-08-22T13:24:23Z'
language: JavaScript
archived: false
- stars: 456
+ stars: 455
watchers: 5
forks: 62
owner: swagger-autogen
logo: https://avatars.githubusercontent.com/u/137681762?v=4
license: MIT
- repoEtag: '"0491b78758e7da970e348fd6ae4d4a0a21d17d1bd4f69b1ab95d842855a254a5"'
- repoLastModified: Wed, 21 Aug 2024 23:54:35 GMT
+ repoEtag: '"f5dd5f87714bd4102d73601d51ccd0432d97488381b519ec0a94588beb6d55d3"'
+ repoLastModified: Thu, 22 Aug 2024 13:24:23 GMT
category: Parsers
foundInMaster: true
oldLocations:
@@ -8693,7 +8693,7 @@
repositoryId: 104184487
description: SqlAlchemy Flask-Restful Swagger Json:API OpenAPI
created: '2017-09-20T07:56:55Z'
- updated: '2024-08-21T03:23:01Z'
+ updated: '2024-08-22T15:13:59Z'
language: Python
archived: false
stars: 405
@@ -8702,8 +8702,8 @@
owner: thomaxxl
logo: https://avatars.githubusercontent.com/u/4190750?v=4
license: GPL-3.0
- repoEtag: '"dec93c8deeee91f01aa7c28908437603babb2b3ed51803d43fef6357790a7326"'
- repoLastModified: Wed, 21 Aug 2024 03:23:01 GMT
+ repoEtag: '"79cc5c8428aef8278107dcb1fbaa685ae459ed14cb4f0c74a595b1b01ee829c6"'
+ repoLastModified: Thu, 22 Aug 2024 15:13:59 GMT
foundInMaster: true
category: Server Implementations
id: 1ccc4d969c768f04576d518679fb6489
@@ -8727,7 +8727,7 @@
owner: dgarcia360
logo: https://avatars.githubusercontent.com/u/9107969?v=4
license: NOASSERTION
- repoEtag: '"45b07536def22131194530a8cbcf73fdae92a7f6a8674d1db64e0f9b6bdbb89e"'
+ repoEtag: '"92403635ba7a4a48f1d95d6d99558e177502c79b9b7697b7a24716dbd3fc7f6f"'
repoLastModified: Wed, 21 Aug 2024 09:23:15 GMT
foundInMaster: true
category:
@@ -8772,17 +8772,17 @@
repositoryId: 222924508
description: FastAPI framework plugins
created: '2019-11-20T11:41:50Z'
- updated: '2024-08-18T05:18:53Z'
+ updated: '2024-08-22T12:08:49Z'
language: Python
archived: false
- stars: 359
+ stars: 360
watchers: 3
forks: 19
owner: madkote
logo: https://avatars.githubusercontent.com/u/4921881?v=4
license: MIT
- repoEtag: '"c93713ecedfbb4e1673086af3101fde9ed563e89b6e819f85803d136fc0f6c2e"'
- repoLastModified: Sun, 18 Aug 2024 05:18:53 GMT
+ repoEtag: '"d7cadd8dbaa108d108ee2fd60b07da22ff6297c75b235b7256f0f06c7fcd715b"'
+ repoLastModified: Thu, 22 Aug 2024 12:08:49 GMT
foundInMaster: true
category: Server Implementations
id: 5b8a96994e594bd26bca9505bbc19018
@@ -8830,17 +8830,17 @@
repositoryId: 479982630
description: Clean Architecture Example using FastAPI framework
created: '2022-04-10T10:23:51Z'
- updated: '2024-08-21T16:17:43Z'
+ updated: '2024-08-22T11:38:39Z'
language: Python
archived: false
- stars: 356
+ stars: 357
watchers: 4
- forks: 51
+ forks: 52
owner: 0xTheProDev
logo: https://avatars.githubusercontent.com/u/14367736?v=4
license: MIT
- repoEtag: '"06ff5c17fa52f5a88908860c4316a456f1e6df21f0942f3a567747e4db6fc905"'
- repoLastModified: Wed, 21 Aug 2024 16:17:43 GMT
+ repoEtag: '"986fae0d052ae60d28103e067cf07680d104aa3a3cfb9e7cadb32b3322bdd3fb"'
+ repoLastModified: Thu, 22 Aug 2024 11:38:39 GMT
category: Server Implementations
foundInMaster: true
oldLocations:
@@ -9099,7 +9099,7 @@
owner: cloudflare
logo: https://avatars.githubusercontent.com/u/314135?v=4
license: MIT
- repoEtag: '"c507e6b0348611cf3ac0a1461844e6dee1fe4bc47d83308a42d70d675c12cc52"'
+ repoEtag: '"8c35b483dffe2ceb266f9835d803d0ad737a0cca954babeda2134f9dc1c13e52"'
repoLastModified: Mon, 19 Aug 2024 16:19:58 GMT
category: Server Implementations
foundInMaster: true
@@ -9119,7 +9119,7 @@
Esmerald framework - Highly scalable, performant, easy to learn, easy to
code and for every sizeable and complex application
created: '2022-10-18T11:50:26Z'
- updated: '2024-08-21T12:27:52Z'
+ updated: '2024-08-22T17:54:11Z'
language: Python
archived: false
stars: 277
@@ -9128,8 +9128,8 @@
owner: dymmond
logo: https://avatars.githubusercontent.com/u/65982469?v=4
license: MIT
- repoEtag: '"6eabc2881d2052289587a678bcef43c4a828991a556e33e923daa2b9fb48ba00"'
- repoLastModified: Wed, 21 Aug 2024 12:27:52 GMT
+ repoEtag: '"1e028340844669b09f4a110a33b4498f6086093e222c04b5e564f190d9c3f7f6"'
+ repoLastModified: Thu, 22 Aug 2024 17:54:11 GMT
category: Server Implementations
foundInMaster: true
- source: openapi3 tags
@@ -9204,7 +9204,7 @@
"getting started" sections into slideshow for your workshops. Manage
multiple documentations with self-deployed znai hub.
created: '2016-12-16T16:42:12Z'
- updated: '2024-08-21T06:26:50Z'
+ updated: '2024-08-22T11:12:58Z'
language: Java
archived: false
stars: 244
@@ -9213,8 +9213,8 @@
owner: testingisdocumenting
logo: https://avatars.githubusercontent.com/u/54154955?v=4
license: Apache-2.0
- repoEtag: '"ba27db9efe93c11177c849024bfe04ffe9ded71e8a3d398c58e8bff54becf3a3"'
- repoLastModified: Wed, 21 Aug 2024 06:26:50 GMT
+ repoEtag: '"4c8b6f7cf560ccebba7e3d929ba0d43fb409f81cf7bf7901bb861cfd9cb7652a"'
+ repoLastModified: Thu, 22 Aug 2024 11:12:58 GMT
foundInMaster: true
category: Documentation
id: e96c15d0478cd8c861932cf44e659757
@@ -9257,17 +9257,17 @@
repositoryId: 591665560
description: APIBrew is Low code software to automate building CRUDs from yaml files
created: '2023-01-21T13:22:13Z'
- updated: '2024-08-21T09:58:00Z'
+ updated: '2024-08-22T08:27:16Z'
language: Go
archived: false
- stars: 238
+ stars: 239
watchers: 4
forks: 7
owner: apibrew
logo: https://avatars.githubusercontent.com/u/132176743?v=4
license: MIT
- repoEtag: '"c2649de201b4bac7e97c416665666a264d47a5184f87cf976b84eb29e8055a72"'
- repoLastModified: Wed, 21 Aug 2024 09:58:00 GMT
+ repoEtag: '"7cd33395cf2d1810c73f4e49b000c856448d6756f956350411d89ba85903b133"'
+ repoLastModified: Thu, 22 Aug 2024 08:27:16 GMT
category: Server Implementations
oldLocations:
- https://github.com/tislib/apibrew
@@ -9339,12 +9339,12 @@
language: Go
archived: false
stars: 229
- watchers: 141
+ watchers: 140
forks: 12
owner: grafana
logo: https://avatars.githubusercontent.com/u/7195757?v=4
license: Apache-2.0
- repoEtag: '"701c70e845062b480a393c62c9d98a32f4a0e6b45267f94c20e4e29cb7b0d17c"'
+ repoEtag: '"5d8e29adea0170ed00e2e471c200a84615ac50e5f06788961b21102eec970d40"'
repoLastModified: Wed, 21 Aug 2024 10:44:42 GMT
foundInMaster: true
category:
@@ -9515,17 +9515,17 @@
repositoryId: 107572738
description: Generates OpenAPI document from OData CSDL
created: '2017-10-19T16:39:13Z'
- updated: '2024-08-21T06:24:16Z'
+ updated: '2024-08-22T09:11:54Z'
language: C#
archived: false
- stars: 202
+ stars: 203
watchers: 31
forks: 62
owner: microsoft
logo: https://avatars.githubusercontent.com/u/6154722?v=4
license: MIT
- repoEtag: '"a8904093759d3b550ea4fd5eca5a434b154d5baf8840925011af0c9e29e55219"'
- repoLastModified: Wed, 21 Aug 2024 06:24:16 GMT
+ repoEtag: '"95386b4634aa98b444ed24d4ab6fb9a87936f5363855be25acdd933e75f51a66"'
+ repoLastModified: Thu, 22 Aug 2024 09:11:54 GMT
foundInMaster: true
category:
- Low-level Tooling
@@ -9660,7 +9660,7 @@
repositoryId: 199614125
description: Use Jest or Chai to assert that HTTP responses satisfy an OpenAPI spec
created: '2019-07-30T08:56:01Z'
- updated: '2024-08-01T22:32:13Z'
+ updated: '2024-08-22T12:05:37Z'
language: TypeScript
archived: false
stars: 189
@@ -9669,8 +9669,8 @@
owner: openapi-library
logo: https://avatars.githubusercontent.com/u/53815441?v=4
license: MIT
- repoEtag: '"36a2ece339ab082f772df370484ea32a40e25b332066f6a962c62a4b96982369"'
- repoLastModified: Thu, 01 Aug 2024 22:32:13 GMT
+ repoEtag: '"ed82dd5962d5d13313d1ca129011819424368e711c1e3faa3fb7052c6b7f5f60"'
+ repoLastModified: Thu, 22 Aug 2024 12:05:37 GMT
foundInMaster: true
category: Testing
id: a81dda804efb1a473233a16a10be8d0b
@@ -9776,17 +9776,17 @@
repositoryId: 362315893
description: Generate REST API and OpenAPI documentation for your Flask project.
created: '2021-04-28T02:39:57Z'
- updated: '2024-08-20T00:50:42Z'
+ updated: '2024-08-22T09:22:02Z'
language: Python
archived: false
- stars: 181
+ stars: 182
watchers: 7
forks: 28
owner: luolingchun
logo: https://avatars.githubusercontent.com/u/22740403?v=4
license: MIT
- repoEtag: '"77ac864ac26ff1b0546f570628ea8a2519729b314a655e50fc8026ecf832a38e"'
- repoLastModified: Tue, 20 Aug 2024 00:50:42 GMT
+ repoEtag: '"b1496fe846713f39182ed781bcb664de0cc492fe84ed57142469048e0662f7ac"'
+ repoLastModified: Thu, 22 Aug 2024 09:22:02 GMT
foundInMaster: true
category: Server Implementations
id: 7baa4046f5397a8fd006511115871ac0
@@ -9829,7 +9829,7 @@
repositoryId: 543052826
description: Speakeasy CLI - Enterprise developer experience for your API
created: '2022-09-29T10:13:15Z'
- updated: '2024-08-21T12:46:24Z'
+ updated: '2024-08-22T14:14:38Z'
language: JavaScript
archived: false
stars: 173
@@ -9838,8 +9838,8 @@
owner: speakeasy-api
logo: https://avatars.githubusercontent.com/u/91446104?v=4
license: NOASSERTION
- repoEtag: '"35c90a03da09906cf9285bc51abdcdb99c1eaf14e9e46ba5f48d7e5b9f7a8e42"'
- repoLastModified: Wed, 21 Aug 2024 12:46:24 GMT
+ repoEtag: '"9631cf89b7636b7cc949889589c0a96ec2092a153b3770b4779a9b04e88faa1e"'
+ repoLastModified: Thu, 22 Aug 2024 14:14:38 GMT
category: Parsers
foundInMaster: true
- source: openapi3 tags
@@ -9887,7 +9887,7 @@
owner: pace
logo: https://avatars.githubusercontent.com/u/16001479?v=4
license: MIT
- repoEtag: '"89a038aef6cffb10263c152f1f120b47a6c5953c7d3feca6a0248e8f9a87823c"'
+ repoEtag: '"0371a995d8a4efeb0638d5d728993546587c5930d2720ebfe44dfc7ef9969ee2"'
repoLastModified: Fri, 12 Jul 2024 14:16:51 GMT
foundInMaster: true
category: Server
@@ -9906,17 +9906,17 @@
A tool for generating Refit interfaces and contracts from OpenAPI
specifications
created: '2023-02-07T23:18:12Z'
- updated: '2024-08-21T12:53:31Z'
+ updated: '2024-08-22T12:17:15Z'
language: C#
archived: false
- stars: 171
+ stars: 170
watchers: 6
forks: 38
owner: christianhelle
logo: https://avatars.githubusercontent.com/u/710400?v=4
license: MIT
- repoEtag: '"f2c0fde34c99b8361e27022efd5f34893c8c280902f2280d3856efee16fd844b"'
- repoLastModified: Wed, 21 Aug 2024 12:53:31 GMT
+ repoEtag: '"ecca45ee03dd7ebac58476f8a62fd1e1a0d67d211078f22146dbaa2b1d7385ce"'
+ repoLastModified: Thu, 22 Aug 2024 12:17:15 GMT
category: Parsers
foundInMaster: true
- source: openapi3 tags
@@ -10197,17 +10197,17 @@
repositoryId: 691100358
description: Actix-web wrapper for automatic OpenAPI 3.0 documentation generation.
created: '2023-09-13T13:54:51Z'
- updated: '2024-08-13T09:19:48Z'
+ updated: '2024-08-22T13:18:06Z'
language: Rust
archived: false
- stars: 126
+ stars: 127
watchers: 5
forks: 3
owner: netwo-io
logo: https://avatars.githubusercontent.com/u/64151169?v=4
license: MIT
- repoEtag: '"1840a49ccf3d437483a6a4bb028744c4d631a620244eba22a464a3c019439354"'
- repoLastModified: Tue, 13 Aug 2024 09:19:48 GMT
+ repoEtag: '"8e0f78933d155434df98862d8f99c7093731c95399ff3d52edaeff00708cf10f"'
+ repoLastModified: Thu, 22 Aug 2024 13:18:06 GMT
category: Parsers
foundInMaster: true
- source: openapi3 tags
@@ -10225,17 +10225,17 @@
Autogenered docs, Zod - BullMQ - Nodemailer - Docker - MongoDB (Mongoose)
- Socket.io
created: '2024-08-11T02:19:59Z'
- updated: '2024-08-21T20:08:04Z'
+ updated: '2024-08-22T16:38:57Z'
language: TypeScript
archived: false
- stars: 139
+ stars: 141
watchers: 1
forks: 25
owner: muneebhashone
logo: https://avatars.githubusercontent.com/u/88892379?v=4
license: MIT
- repoEtag: '"603d0b350bb9214bb52e9b02e60ffaa71c35cc8f065aaeb8611098537d885648"'
- repoLastModified: Wed, 21 Aug 2024 20:08:04 GMT
+ repoEtag: '"da3b038530f556dad59a058d7ea71f6cf6846920ec985db798b70ba2d248c232"'
+ repoLastModified: Thu, 22 Aug 2024 16:38:57 GMT
category: Server Implementations
foundInMaster: true
- source: openapi3 tags
@@ -10251,7 +10251,7 @@
A RESTful framework built on top of light-4j with both Swagger 2.0 and
OpenAPI 3.0 supports
created: '2017-01-22T14:48:44Z'
- updated: '2024-08-17T18:35:04Z'
+ updated: '2024-08-22T19:11:12Z'
language: Java
archived: false
stars: 119
@@ -10260,8 +10260,8 @@
owner: networknt
logo: https://avatars.githubusercontent.com/u/8740739?v=4
license: Apache-2.0
- repoEtag: '"3eeb339231a3a7426d1977239618c27542c6a3c04a1077a2d639c4d74956f4dd"'
- repoLastModified: Sat, 17 Aug 2024 18:35:04 GMT
+ repoEtag: '"a6def6baee6c636e4cd363064b0bb1c92ce5c0b401ff082f5f9a972b7d8c5e03"'
+ repoLastModified: Thu, 22 Aug 2024 19:11:12 GMT
foundInMaster: true
category:
- Low-level Tooling
@@ -10500,7 +10500,7 @@
repositoryId: 285621457
description: OpenAPI - Getting started, and the specification explained
created: '2020-08-06T16:40:47Z'
- updated: '2024-08-21T17:22:54Z'
+ updated: '2024-08-22T13:06:29Z'
language: Markdown
archived: false
stars: 108
@@ -10509,8 +10509,8 @@
owner: OAI
logo: https://avatars.githubusercontent.com/u/16343502?v=4
license: CC-BY-4.0
- repoEtag: '"01be3f5aa7eb57d932915138e462fdf6c9eab24ab11b26cbb75c39db4ba61865"'
- repoLastModified: Wed, 21 Aug 2024 17:22:54 GMT
+ repoEtag: '"e0ab992fcefeff536356596ddd9574d21390686e41d8ee0699baef26a3acde63"'
+ repoLastModified: Thu, 22 Aug 2024 13:06:29 GMT
category:
- Parsers
- Server Implementations
@@ -10609,17 +10609,17 @@
Simple and efficient HTTP mock server with specification in yaml, edn or
OpenAPI
created: '2022-02-23T10:49:57Z'
- updated: '2024-08-21T14:35:07Z'
+ updated: '2024-08-23T00:55:52Z'
language: Clojure
archived: false
- stars: 106
+ stars: 107
watchers: 3
forks: 11
owner: moclojer
logo: https://avatars.githubusercontent.com/u/103039458?v=4
license: MIT
- repoEtag: '"d4f34a7889aa7de22942cf2ffc680d133a27948c85bcaae24d466495dfc89995"'
- repoLastModified: Wed, 21 Aug 2024 14:35:07 GMT
+ repoEtag: '"473ddd948cd62713f69ddd5ad0e9149eba18c8b9c2f117b737513ad0ea6a02de"'
+ repoLastModified: Fri, 23 Aug 2024 00:55:52 GMT
category: Testing
foundInMaster: true
oldLocations:
@@ -10724,7 +10724,7 @@
A collection of open-source and commercial tools for creating your APIs
with OpenAPI - Sourced from and published for the community
created: '2022-01-14T19:24:14Z'
- updated: '2024-08-21T03:27:59Z'
+ updated: '2024-08-22T03:30:47Z'
language: JavaScript
archived: false
stars: 96
@@ -10732,8 +10732,8 @@
forks: 26
owner: OAI
logo: https://avatars.githubusercontent.com/u/16343502?v=4
- repoEtag: '"5310c4e28769cf6b3580370bc43d642d638b63cb036ca914a90246e019365f8f"'
- repoLastModified: Wed, 21 Aug 2024 03:27:59 GMT
+ repoEtag: '"4700b398fbdd930610b468f510bc78476960fcc37387719be3e1940e278c147e"'
+ repoLastModified: Thu, 22 Aug 2024 03:30:47 GMT
category: Server Implementations
foundInMaster: true
oldLocations:
@@ -10783,7 +10783,7 @@
Converts OpenAPI 3.0 definitions to Plant UML text for visualisation of
your API.
created: '2021-02-17T03:47:43Z'
- updated: '2024-08-20T02:31:28Z'
+ updated: '2024-08-22T17:34:10Z'
language: Java
archived: false
stars: 95
@@ -10792,8 +10792,8 @@
owner: davidmoten
logo: https://avatars.githubusercontent.com/u/318187?v=4
license: Apache-2.0
- repoEtag: '"ef8796f144815d5534c6ec4cc39ae5a75051787e7b1a20a7db306618c8308267"'
- repoLastModified: Tue, 20 Aug 2024 02:31:28 GMT
+ repoEtag: '"2166adb33bc149aedcd1ae6ba58ad3432547d7169e497d00af8f294607b1780a"'
+ repoLastModified: Thu, 22 Aug 2024 17:34:10 GMT
foundInMaster: true
category: SDK
id: d4f9d833f5a48b843c52f5ec6f582976
@@ -10842,11 +10842,11 @@
archived: false
stars: 92
watchers: 8
- forks: 51
+ forks: 52
owner: oatpp
logo: https://avatars.githubusercontent.com/u/37167448?v=4
license: Apache-2.0
- repoEtag: '"6a6f4b3bb8ee54045d136007b44ee0686c7937839d3f682fa76a80a9a68c5d7f"'
+ repoEtag: '"688dc27b9f6ae19d149c7128be2891a65bc00c8f6c9513c9e2c41c0391e4953f"'
repoLastModified: Wed, 17 Jul 2024 06:38:07 GMT
foundInMaster: true
category: Low-level Tooling
@@ -10977,7 +10977,7 @@
owner: jellyfin
logo: https://avatars.githubusercontent.com/u/45698031?v=4
license: LGPL-3.0
- repoEtag: '"4192d2a8e814ec568927a2d5276ff26b7fcf8d5d664158f9aaa485c0df1c56bb"'
+ repoEtag: '"a90bc832d70019de9487728466611a6bed8db12d9772c7b230c1e414d3613fe6"'
repoLastModified: Sat, 10 Aug 2024 03:48:58 GMT
foundInMaster: true
category: Testing
@@ -11211,7 +11211,7 @@
repositoryId: 249737066
description: Semantic parser for API specifications
created: '2020-03-24T14:55:51Z'
- updated: '2024-08-21T23:41:43Z'
+ updated: '2024-08-22T23:50:57Z'
language: TypeScript
archived: false
stars: 67
@@ -11219,8 +11219,8 @@
forks: 15
owner: swagger-api
logo: https://avatars.githubusercontent.com/u/7658037?v=4
- repoEtag: '"9ffcfc266efb85aeb11e983c1f2e836b0cdcceb331af80a87720914193571d35"'
- repoLastModified: Wed, 21 Aug 2024 23:41:43 GMT
+ repoEtag: '"1fe3fdeec68b0cb8a9b4945fd5b9984bd15a0bd6a6f860b1180f2bff32820415"'
+ repoLastModified: Thu, 22 Aug 2024 23:50:57 GMT
category: Parsers
foundInMaster: true
- source: openapi3 tags
@@ -11345,16 +11345,16 @@
Improve the security of your API by detecting common vulnerabilities as
defined by OWASP and enforced with Spectral.
created: '2022-08-25T18:14:13Z'
- updated: '2024-08-19T10:45:17Z'
+ updated: '2024-08-22T19:44:19Z'
language: TypeScript
archived: false
- stars: 61
+ stars: 62
watchers: 3
forks: 11
owner: stoplightio
logo: https://avatars.githubusercontent.com/u/10767217?v=4
- repoEtag: '"73220128b32d51060a50cb4cdd26e8688542f4d3d59427603cf883a704a6da25"'
- repoLastModified: Mon, 19 Aug 2024 10:45:17 GMT
+ repoEtag: '"f8b343fc81adc5a7dfe5bf8917a3edca5faee049ffb979b36d5512e32e7da9f2"'
+ repoLastModified: Thu, 22 Aug 2024 19:44:19 GMT
category: Server Implementations
foundInMaster: true
- source: openapi3 tags
@@ -11603,17 +11603,17 @@
repositoryId: 699872484
description: Generate SDKs and docs for your API
created: '2023-10-03T14:04:44Z'
- updated: '2024-08-20T03:52:05Z'
+ updated: '2024-08-22T17:55:52Z'
language: Rust
archived: false
- stars: 53
+ stars: 54
watchers: 4
forks: 2
owner: Sideko-Inc
logo: https://avatars.githubusercontent.com/u/122366043?v=4
license: NOASSERTION
- repoEtag: '"897761a40ad91dc75b706a913026b536310737f78854f78fcaa569cdbed6b2de"'
- repoLastModified: Tue, 20 Aug 2024 03:52:05 GMT
+ repoEtag: '"7482f229e186d1c1905ebc38d886a1ebaf80618e62f3608810fa825d0d0de25d"'
+ repoLastModified: Thu, 22 Aug 2024 17:55:52 GMT
category: SDK
foundInMaster: true
oldLocations:
@@ -11874,7 +11874,7 @@
forks: 26
owner: piomin
logo: https://avatars.githubusercontent.com/u/2892502?v=4
- repoEtag: '"d990e9bce458b05afed633f1ca7a29d3c8aa3b5d88f608763f1873fa15313087"'
+ repoEtag: '"99c65207c2fe3a75920be7f469a3a5ea0413909f67299b462ac4f9110e80a10f"'
repoLastModified: Mon, 19 Aug 2024 02:14:29 GMT
foundInMaster: true
category: SDK
@@ -11896,7 +11896,7 @@
This GitHub Actions validates OpenAPI (OAS) definition file using Swagger
Editor.
created: '2021-03-05T18:37:29Z'
- updated: '2024-08-21T04:25:22Z'
+ updated: '2024-08-22T04:29:38Z'
language: JavaScript
archived: false
stars: 46
@@ -11905,8 +11905,8 @@
owner: swaggerexpert
logo: https://avatars.githubusercontent.com/u/172408630?v=4
license: BSD-3-Clause
- repoEtag: '"4db04859b51891e0c0d99f34b48eda92b80f3de71516d525309098eb16ae1401"'
- repoLastModified: Wed, 21 Aug 2024 04:25:22 GMT
+ repoEtag: '"3e6c018debfa23e96abf1af39eeba314731bd9895e1c3cbb29772e79336012e5"'
+ repoLastModified: Thu, 22 Aug 2024 04:29:38 GMT
category: Server Implementations
foundInMaster: true
- source: openapi3 tags
@@ -11946,7 +11946,7 @@
repositoryId: 439764250
description: OpenAPI v3.1 Spec implementation in Go with generics
created: '2021-12-19T03:11:04Z'
- updated: '2024-08-21T23:32:31Z'
+ updated: '2024-08-22T07:45:43Z'
language: Go
archived: false
stars: 46
@@ -11955,8 +11955,8 @@
owner: sv-tools
logo: https://avatars.githubusercontent.com/u/59230487?v=4
license: MIT
- repoEtag: '"32598a8f24ea614339ecc809900f6ad3cfd2eb4da7298e53a937a292af0d6492"'
- repoLastModified: Wed, 21 Aug 2024 23:32:31 GMT
+ repoEtag: '"b86704f23b186771e203729aafcbe0ffaad02d6d5974ca86acd491198c758240"'
+ repoLastModified: Thu, 22 Aug 2024 07:45:43 GMT
foundInMaster: true
category:
- Low-level Tooling
@@ -11981,7 +11981,7 @@
Annotation processor for compile-time OpenAPI & JsonSchema, with
out-of-the-box support for Javalin 5.x, Swagger & ReDoc
created: '2021-05-04T16:10:52Z'
- updated: '2024-08-12T11:15:44Z'
+ updated: '2024-08-22T22:37:58Z'
language: Kotlin
archived: false
stars: 45
@@ -11990,8 +11990,8 @@
owner: javalin
logo: https://avatars.githubusercontent.com/u/28701086?v=4
license: Apache-2.0
- repoEtag: '"b11bcb2cd998679ec74c0fe8248d0a2434134b24fa9d3cd0185952c8c293bddb"'
- repoLastModified: Mon, 12 Aug 2024 11:15:44 GMT
+ repoEtag: '"8df27081fc0820291a4c4810c779999f09074ca1ed180831544b24162c7dc63f"'
+ repoLastModified: Thu, 22 Aug 2024 22:37:58 GMT
category: SDK
foundInMaster: true
oldLocations:
@@ -12143,7 +12143,7 @@
repositoryId: 241074287
description: Backbase Open Api Tools (boat) helps manage large OpenAPI projects
created: '2020-02-17T10:00:41Z'
- updated: '2024-08-21T14:31:08Z'
+ updated: '2024-08-22T09:18:19Z'
language: Mustache
archived: false
stars: 41
@@ -12152,8 +12152,8 @@
owner: Backbase
logo: https://avatars.githubusercontent.com/u/1914334?v=4
license: NOASSERTION
- repoEtag: '"f89b8129651334ec9f028fdcdda759a42f7e65df0dd444d0088896baf2f05383"'
- repoLastModified: Wed, 21 Aug 2024 14:31:08 GMT
+ repoEtag: '"d5c158ed65b3a55c2a32fb3e07e13a1aaee679cda64247588414376bbd2c9df0"'
+ repoLastModified: Thu, 22 Aug 2024 09:18:19 GMT
foundInMaster: true
category: SDK
id: fd5b893e6ddf5af8821536a61ecb1d4e
@@ -12265,7 +12265,7 @@
owner: JaredCE
logo: https://avatars.githubusercontent.com/u/770400?v=4
license: MIT
- repoEtag: '"ecd05b160c9169737ca24f08682519813999b7d568bba67160f4a3f2aec4e255"'
+ repoEtag: '"c11ed1db01500ceacc5fcfc11f0aebda9b8c77568ec92684245d95921855ad66"'
repoLastModified: Tue, 30 Jul 2024 14:38:16 GMT
category: Parsers
foundInMaster: true
@@ -12446,17 +12446,17 @@
OpenAPIClientWizard – the ultimate plugin for RAD Studio that
revolutionizes the way Delphi developers implement REST API clients.
created: '2024-06-10T07:29:10Z'
- updated: '2024-08-01T07:01:16Z'
+ updated: '2024-08-22T15:23:41Z'
language: Pascal
archived: false
- stars: 36
+ stars: 37
watchers: 6
forks: 3
owner: AliDehbansiahkarbon
logo: https://avatars.githubusercontent.com/u/5601608?v=4
license: MIT
- repoEtag: '"0c6418f093cfb7471635b8843042c399a7d9a5ba119e876967a084d9cea99a7b"'
- repoLastModified: Thu, 01 Aug 2024 07:01:16 GMT
+ repoEtag: '"948cd50e425d443e161be1e87902492f0a8512ea037d78cd374f5830e1239a4f"'
+ repoLastModified: Thu, 22 Aug 2024 15:23:41 GMT
category: Server Implementations
foundInMaster: true
- source: openapi3 tags
@@ -12664,7 +12664,7 @@
public APIs on the internet. This dataset also includes descriptions,
categories, uptime metrics, and media assets for every API.
created: '2024-01-26T19:30:01Z'
- updated: '2024-08-21T00:22:35Z'
+ updated: '2024-08-22T22:39:46Z'
language: null
archived: false
stars: 33
@@ -12672,8 +12672,8 @@
forks: 3
owner: konfig-sdks
logo: https://avatars.githubusercontent.com/u/156027835?v=4
- repoEtag: '"2330f633f3762c19b1f2945a4cd0a0848a6b8a362a3d645bad8ad377bf795022"'
- repoLastModified: Wed, 21 Aug 2024 00:22:35 GMT
+ repoEtag: '"3d5fab284ca52c3df33db75b6a7baa3524c40bd654dd31feb4c03e0d26d7e4b0"'
+ repoLastModified: Thu, 22 Aug 2024 22:39:46 GMT
category: Parsers
foundInMaster: true
- source: openapi3 tags
@@ -12751,7 +12751,7 @@
owner: data-fair
logo: https://avatars.githubusercontent.com/u/83776320?v=4
license: AGPL-3.0
- repoEtag: '"136242f91d043c84eaeff35c9f30eea80bb9fd4d88f1b4bb05943e70599322a3"'
+ repoEtag: '"fa0f452713dcb0b5deefe4404be1ef1ec820de76cc84b744a3bd3d06e2933664"'
repoLastModified: Mon, 19 Aug 2024 09:09:20 GMT
foundInMaster: true
category:
@@ -13084,7 +13084,7 @@
repositoryId: 393620909
description: RESTful API for managing a school
created: '2021-08-07T08:06:01Z'
- updated: '2024-08-21T12:23:48Z'
+ updated: '2024-08-22T07:59:01Z'
language: Java
archived: false
stars: 27
@@ -13093,8 +13093,8 @@
owner: hei-school
logo: https://avatars.githubusercontent.com/u/88576095?v=4
license: MIT
- repoEtag: '"5c5aeafc9e8eb88ff61885bf5b1e6813bf1cf26243736ff29e27ecbf0be80faa"'
- repoLastModified: Wed, 21 Aug 2024 12:23:48 GMT
+ repoEtag: '"31544c5bbaba78c7df526eb17aa7de5159351c133c6be3f2fef50f452eeb723e"'
+ repoLastModified: Thu, 22 Aug 2024 07:59:01 GMT
foundInMaster: true
category: Code Generators
id: bf98240ea893afa32efc180fb73dd5b6
@@ -13343,17 +13343,17 @@
repositoryId: 244148241
description: null
created: '2020-03-01T12:49:22Z'
- updated: '2024-07-27T17:56:29Z'
+ updated: '2024-08-23T00:37:06Z'
language: Scala
archived: false
- stars: 23
+ stars: 24
watchers: 3
forks: 33
owner: OpenAPITools
logo: https://avatars.githubusercontent.com/u/37325267?v=4
license: NOASSERTION
- repoEtag: '"9177a212e5830faf6002a20791fcc6dc4802affb53349f71026adf22c69e7330"'
- repoLastModified: Sat, 27 Jul 2024 17:56:29 GMT
+ repoEtag: '"e91884f587ec126002711ca32808718bfa9be09882d70f3f3412dda15a3ae7db"'
+ repoLastModified: Fri, 23 Aug 2024 00:37:06 GMT
foundInMaster: true
category: Description Validators
id: b442d7afc94f3b9d9e3009c0936c0e9c
@@ -13807,7 +13807,7 @@
owner: dkackman
logo: https://avatars.githubusercontent.com/u/5160233?v=4
license: Apache-2.0
- repoEtag: '"441b6e57123b318a1005666138aedc6322befe1f57a32046dbeb866c3a735d8a"'
+ repoEtag: '"669ba2b6a9398e9678b83f038b5a090bc9db50c428038ed4695968f938c74a71"'
repoLastModified: Wed, 07 Aug 2024 12:51:57 GMT
foundInMaster: true
category: Server
@@ -13937,7 +13937,7 @@
owner: eikek
logo: https://avatars.githubusercontent.com/u/701128?v=4
license: MIT
- repoEtag: '"1fb0327b1af2ab783d8b8cd554ab19f321639a762a7d8148744da41bb7af9508"'
+ repoEtag: '"e7e89866f4a319c87fed1851a71ab15c91b6863d74f0a9dc82a4ef3292bd0ec0"'
repoLastModified: Tue, 23 Jul 2024 06:13:58 GMT
foundInMaster: true
category: Parsers
@@ -14030,7 +14030,7 @@
repositoryId: 98350934
description: Mockoon application official website repository and documentation
created: '2017-07-25T21:19:22Z'
- updated: '2024-08-21T15:13:30Z'
+ updated: '2024-08-22T14:21:34Z'
language: TypeScript
archived: false
stars: 20
@@ -14039,8 +14039,8 @@
owner: mockoon
logo: https://avatars.githubusercontent.com/u/49429147?v=4
license: NOASSERTION
- repoEtag: '"cc9851ef04b48e26cbac167db12dafe91003cd55381299efa1e206ca1722c350"'
- repoLastModified: Wed, 21 Aug 2024 15:13:30 GMT
+ repoEtag: '"48cc5a618fed35f3a76233c029bb02d5b84dc4085854888d76c37c917dbf864c"'
+ repoLastModified: Thu, 22 Aug 2024 14:21:34 GMT
foundInMaster: true
category: Testing
id: 84d3391fa9deedcd6398666ba504eb78
@@ -14277,17 +14277,17 @@
A community-created collection of configuration, plugins and techniques
for getting the best from Redocly CLI in every situation.
created: '2023-09-28T15:12:02Z'
- updated: '2024-08-20T07:59:01Z'
+ updated: '2024-08-22T07:22:26Z'
language: JavaScript
archived: false
- stars: 18
+ stars: 19
watchers: 15
forks: 4
owner: Redocly
logo: https://avatars.githubusercontent.com/u/32099856?v=4
license: MIT
- repoEtag: '"79028164caceee969733003e59bea0f0e63287bcc57bff34ab037e40c964b56d"'
- repoLastModified: Tue, 20 Aug 2024 07:59:01 GMT
+ repoEtag: '"b9cc83f3e34eac0658cb93db0948e77c679491ed5e8123fde994e808afd07f1a"'
+ repoLastModified: Thu, 22 Aug 2024 07:22:26 GMT
category: Server Implementations
foundInMaster: true
- source: openapi3 tags
@@ -14428,7 +14428,7 @@
repositoryId: 530271572
description: Axios based HTTP client with type hint
created: '2022-08-29T15:06:26Z'
- updated: '2024-08-20T07:51:30Z'
+ updated: '2024-08-22T07:47:30Z'
language: TypeScript
archived: false
stars: 18
@@ -14437,8 +14437,8 @@
owner: yinzhenyu-su
logo: https://avatars.githubusercontent.com/u/16461374?v=4
license: MIT
- repoEtag: '"b9f59746c03cba02853129e7c1e76f0462da7de0037d5c216839e4c640bd0bc0"'
- repoLastModified: Tue, 20 Aug 2024 07:51:30 GMT
+ repoEtag: '"878eedc40dadbeba1d206933d7250b6a7a665819f419a2267656a7d93e17920c"'
+ repoLastModified: Thu, 22 Aug 2024 07:47:30 GMT
category: Parsers
foundInMaster: true
- source: openapi3 tags
@@ -14768,16 +14768,16 @@
repositoryId: 683452181
description: Convert OpenAPI to PDF.
created: '2023-08-26T16:09:46Z'
- updated: '2024-08-08T07:08:04Z'
+ updated: '2024-08-22T13:02:59Z'
language: TypeScript
archived: false
- stars: 16
+ stars: 17
watchers: 2
forks: 2
owner: curvednebula
logo: https://avatars.githubusercontent.com/u/1443238?v=4
- repoEtag: '"53779f54b7ed5c6d3e6056a91bab63c9178726ae51b62722d3e71c5959b45fa0"'
- repoLastModified: Thu, 08 Aug 2024 07:08:04 GMT
+ repoEtag: '"0d7adeb7e7c34f241fdc93d6f55d2daa9c4a6aeb78cd627cc57ba014a91dd873"'
+ repoLastModified: Thu, 22 Aug 2024 13:02:59 GMT
category: Parsers
foundInMaster: true
- source: openapi3 tags
@@ -17154,17 +17154,17 @@
repositoryId: 530807671
description: Write Web API clients using annotations in python
created: '2022-08-30T19:50:12Z'
- updated: '2024-08-18T17:31:54Z'
+ updated: '2024-08-22T18:52:04Z'
language: Python
archived: false
- stars: 8
+ stars: 9
watchers: 1
forks: 0
owner: python-lapidary
logo: https://avatars.githubusercontent.com/u/111730600?v=4
license: MIT
- repoEtag: '"56ab1af71b7ba7c02b9cd0b79274a2b5aaddd4d8979b541d6cbf6bfa9009ffae"'
- repoLastModified: Sun, 18 Aug 2024 17:31:54 GMT
+ repoEtag: '"7be84b9b935c691843a73ca4b73f9f7deeac58e8b37f3d2e03b1ed8d8f190b1d"'
+ repoLastModified: Thu, 22 Aug 2024 18:52:04 GMT
category:
- Parsers
- SDK
@@ -20193,7 +20193,7 @@
repositoryId: 360806446
description: NestJS RESTful API starter for minimalists
created: '2021-04-23T07:53:38Z'
- updated: '2024-06-27T21:11:53Z'
+ updated: '2024-08-22T22:03:28Z'
language: TypeScript
archived: false
stars: 4
@@ -20202,8 +20202,8 @@
owner: crazyoptimist
logo: https://avatars.githubusercontent.com/u/55074937?v=4
license: MIT
- repoEtag: '"f0c911697d55ff6a6e134b1ae2197ec2629d67fdff08a739edc8e18cab32c170"'
- repoLastModified: Thu, 27 Jun 2024 21:11:53 GMT
+ repoEtag: '"815690d6dfcf207327bd79ff8f78c4fefefdd80968bee2bd5124de9fcaf04613"'
+ repoLastModified: Thu, 22 Aug 2024 22:03:28 GMT
category: Server Implementations
foundInMaster: true
- source: openapi3 tags
@@ -20999,7 +20999,7 @@
OpenAPI Server URL templating parser, validator and substitution
mechanism.
created: '2024-06-03T08:05:16Z'
- updated: '2024-08-20T22:27:53Z'
+ updated: '2024-08-22T22:36:20Z'
language: JavaScript
archived: false
stars: 3
@@ -21008,8 +21008,8 @@
owner: swaggerexpert
logo: https://avatars.githubusercontent.com/u/172408630?v=4
license: Apache-2.0
- repoEtag: '"3114f9cebbf414f533cea4fe94cce7800b0ae23553e05651b22d7a429816bddd"'
- repoLastModified: Tue, 20 Aug 2024 22:27:53 GMT
+ repoEtag: '"98a5522e60c386f39380932a54803d4fd725b3fa7e3fbbeba41de96b7f54f575"'
+ repoLastModified: Thu, 22 Aug 2024 22:36:20 GMT
category: Parsers
foundInMaster: true
- source: openapi3 tags
@@ -21142,7 +21142,7 @@
owner: apiaddicts
logo: https://avatars.githubusercontent.com/u/31730093?v=4
license: LGPL-3.0
- repoEtag: '"21999f04c34b6b17ff2507733873bd61378910976368cac4fac52739995c51e0"'
+ repoEtag: '"9a674abafc8fac5c03b935ca8d053dd975fae159fd16e3c24b5a8d2dc63ed872"'
repoLastModified: Fri, 24 Feb 2023 09:20:19 GMT
category:
- Code Generators
@@ -21775,7 +21775,7 @@
owner: sergeyklay
logo: https://avatars.githubusercontent.com/u/1256298?v=4
license: MIT
- repoEtag: '"8225fd8178c44a86d34c12bcced465edc612709f4c26fd92b00fa1200763ba66"'
+ repoEtag: '"39b8f97034127404129c9d21096a5f9242147f50394b8467d69ec7a27c5be858"'
repoLastModified: Mon, 05 Aug 2024 12:03:47 GMT
category: Server Implementations
foundInMaster: true
@@ -22965,7 +22965,7 @@
repositoryId: 730126319
description: OpenAPI Path Templating parser, validator and resolver.
created: '2023-12-11T09:07:36Z'
- updated: '2024-08-20T18:14:52Z'
+ updated: '2024-08-22T18:46:23Z'
language: JavaScript
archived: false
stars: 2
@@ -22974,8 +22974,8 @@
owner: swaggerexpert
logo: https://avatars.githubusercontent.com/u/172408630?v=4
license: Apache-2.0
- repoEtag: '"3f9f6bd6fccfecb7ee420a7f0aebdbf57539a8a0e40944d228adf01f59c32264"'
- repoLastModified: Tue, 20 Aug 2024 18:14:52 GMT
+ repoEtag: '"d9dda89d906827e37db51dae62b7bd8a8a5feaf23a4f97731b75ce9cc7e1ff1b"'
+ repoLastModified: Thu, 22 Aug 2024 18:46:23 GMT
category: Parsers
foundInMaster: true
- source: openapi3 tags
@@ -24056,7 +24056,7 @@
owner: tada5hi
logo: https://avatars.githubusercontent.com/u/13162758?v=4
license: MIT
- repoEtag: '"8e5fbdb45a720fc055409e51011c4329e58c364f9607a58b7f0e9519c443dd00"'
+ repoEtag: '"1c898de8260ba7c51aeb4db05791599103c5f843358cfbd192c154d0128a64d6"'
repoLastModified: Mon, 24 Jun 2024 09:22:04 GMT
category: Parsers
foundInMaster: true
@@ -25246,15 +25246,15 @@
id: 543ce5060a72d51fc2b5db044476e02f
repositoryMetadata:
base64Readme: >-
- PHA+CiAgPGI+UHl0aG9uIFNlcnZlciBPcGVuQVBJIEdlbmVyYXRvciwgUHl0aG9uIENsaWVudCBPcGVuQVBJIEdlbmVyYXRvciwgS290bGluIFNlcnZlciBPcGVuQVBJIEdlbmVyYXRvcjwvYj4KPC9wPgoKLS0tCgo8cCBhbGlnbj0iY2VudGVyIj4KICA8Yj5Eb2N1bWVudGF0aW9uLCBzb3VyY2UgY29kZTogPGEgaHJlZj0iaHR0cHM6Ly9naXRodWIuY29tL3drYXJ3YWNraS90cnVzdCIgdGFyZ2V0PSJfYmxhbmsiPmh0dHBzOi8vZ2l0aHViLmNvbS93a2Fyd2Fja2kvdHJ1c3Q8L2E+PC9iPgo8L3A+CgotLS0KIyBUcnVzdCBTcGVjCgpUcnVzdCBTcGVjIGlzIGEgd2ViIGludGVncmF0aW9uIHNwZWNpZmljYXRpb24gYW5kIGEgc2V0IG9mIGNvZGUgZ2VuZXJhdG9ycyBhaW1pbmcgdG8gYmUgYSBzdWJzdGl0dXRlIGZvciBPcGVuQVBJLiBJdCBwcm92aWRlcyBhIHVuaWZpZWQgd2F5IHRvIGRlc2NyaWJlIGRhdGEgdHJhbnNmZXIgaW50ZXJmYWNlcyBhbmQgZ2VuZXJhdGVzIG1vZGVybiwgdHlwZS1zYWZlIGNvZGUuCgojIyBUYWJsZSBvZiBDb250ZW50cwotIFsqKnRsZHI7IEkganVzdCB3YW50IHRvIGdsdWUgbXkgc2VydmljZXMgdG9nZXRoZXIqKl0oI2ktanVzdC13YW50LXRvLWdsdWUtbXktc2VydmljZXMtdG9nZXRoZXIpCi0gW1NwZWNpZmljYXRpb25dKCNzcGVjaWZpY2F0aW9uKQogIC0gW092ZXJ2aWV3XSgjb3ZlcnZpZXcpCiAgLSBbQ29tbW9uIFVzZSBDYXNlc10oI2NvbW1vbi11c2UtY2FzZXMpCiAgLSBbT3BlbkFQSSBDb252ZXJzaW9uXSgjb3BlbmFwaS1jb252ZXJzaW9uKQotIFtDb2RlIEdlbmVyYXRpb25dKCNjb2RlLWdlbmVyYXRpb24pCiAgLSBbVXNhZ2VdKCN1c2FnZSkKICAgIC0gW1dpdGggRG9ja2VyXSgjd2l0aC1kb2NrZXIpCiAgICAtIFtGcm9tIFNvdXJjZV0oI2Zyb20tc291cmNlKQogIC0gW1N1cHBvcnRlZCBHZW5lcmF0b3JzXSgjc3VwcG9ydGVkLWdlbmVyYXRvcnMpCiAgICAtIFtFeHBlcmltZW50YWwgR2VuZXJhdG9yc10oI2V4cGVyaW1lbnRhbC1nZW5lcmF0b3JzKQoKIyMgSSBqdXN0IHdhbnQgdG8gZ2x1ZSBteSBzZXJ2aWNlcyB0b2dldGhlcgpJbnN0YWxsIFRydXN0OgpgYGBzaGVsbAokIHBpcCBpbnN0YWxsIHRydXN0c3BlY2NsaQpgYGAKVGhlbiwgcnVuOgpgYGBzaGVsbAokIHRydXN0CgpVc2FnZTogdHJ1c3QgPENPTU1BTkQ+CgpDb21tYW5kczoKZnJvbS1vcGVuLWFwaSAgCnRvLW9wZW4tYXBpICAgIApnZW5lcmF0ZSAgICAgICAKaGVscCAgICAgICAgICAgUHJpbnQgdGhpcyBtZXNzYWdlIG9yIHRoZSBoZWxwIG9mIHRoZSBnaXZlbiBzdWJjb21tYW5kKHMpCgpPcHRpb25zOgotaCwgLS1oZWxwICBQcmludCBoZWxwCmBgYAoKLSBJZiB5b3UgYWxyZWFkeSBoYXZlIGFuIE9wZW5BUEkgc3BlYzoKICAxLiBmaXJzdCBjb252ZXJ0IGl0IHRvIFRydXN0IHNwZWMgd2l0aCBgZnJvbS1vcGVuLWFwaWAgY29tbWFuZAogIDIuIGFuZCB0aGVuIGdlbmVyYXRlIHRoZSBnbHVlIGNvZGUgd2l0aCBgZ2VuZXJhdGVgIGNvbW1hbmQuCgogID4gOmV4Y2xhbWF0aW9uOiBOb3RlIHRoYXQgeW91IG1heSBlYXNpbHkgYXV0b21hdGUgdGhlIHdob2xlIHByb2Nlc3MgY29tYmluaW5nIHRoZSB0d28gc3RlcHMgYWJvdmUsIGhvd2V2ZXIgaXQgaXMgcmVjb21tZW5kZWQgdG8gbWFrZSBhIG1pZ3JhdGlvbiBvbmNlIGFuZCBsZXZlcmFnZSBUcnVzdCBzcGVjJ3MgZXhwcmVzc2l2ZW5lc3MgaW4gbG9uZy10ZXJtLgoKLSAqKldpdGhvdXQgYW4gT3BlbkFQSSBzcGVjOioqCiAgLSBTdGFydCBkaXJlY3RseSB3aXRoIFRydXN0IHNwZWMuCgotICoqVG8gY29udGludWUgdXNpbmcgT3BlbkFQSSBmb3IgY29kZSBnZW5lcmF0aW9uOioqCiAgLSBVc2UgVHJ1c3Qgc3BlYyBhcyBhbiBpbnRlcm1lZGlhdGUgZm9ybWF0IHdpdGggdGhlIGB0by1vcGVuLWFwaWAgY29tbWFuZC4KCiMjIFNwZWNpZmljYXRpb24KVHJ1c3Qgc3BlY2lmaWNhdGlvbiBlbmhhbmNlcyBjdXJyZW50IGludGVncmF0aW9uIHN0YW5kYXJkcyBsaWtlIFtPcGVuQVBJXShodHRwczovL2dpdGh1Yi5jb20vT0FJL09wZW5BUEktU3BlY2lmaWNhdGlvbikuIEtleSBiZW5lZml0cyBpbmNsdWRlOgotICoqQ2xlYXIgTm90YXRpb24qKiAtIFNpbmdsZSB3YXkgdG8gbW9kZWwgYW5kIGludGVycHJldCBhbiBBUEkuCi0gKipHZW5lcmljIFR5cGVzKiogLSBDdXN0b21pemFibGUgdHlwZXMgd2l0aCBwYXJhbWV0ZXJzIGZvciBkaWZmZXJlbnQgY29udGV4dHMuCi0gKipNaW5pbWFsaXN0aWMqKiAtIFNpbXBsZSwgZWZmaWNpZW50IGxhbmd1YWdlIHdpdGhvdXQgcmVkdW5kYW50IGZlYXR1cmVzLgotICoqV2ViIFN5c3RlbSBJbnRlZ3JhdGlvbiBGb2N1c2VkKiogLSBJZGVhbCBmb3IgdHlwZS1zYWZlIHN5c3RlbSBpbnRlZ3JhdGlvbi4KLSAqKkhpZ2hseSBDdXN0b21pemFibGUqKiAtIEV4dGVuc2l2ZSBbaGFuZGxlYmFyc10oaHR0cHM6Ly9naXRodWIuY29tL3N1bm5nODcvaGFuZGxlYmFycy1ydXN0KSBoZWxwZXJzIGZvciB0ZW1wbGF0ZSBtb2RpZmljYXRpb24uCi0gKipQcm90b2NvbC1BZ25vc3RpYyoqIC0gRGVzaWduZWQgZm9yIEhUVFAgYnV0IGFwcGxpY2FibGUgdG8gYW55IEFQSSB0eXBlLgoKSXQgYWRkcmVzc2VzIGluaGVyZW50IE9wZW5BUEkgaXNzdWVzIHdpdGg6Ci0gKipFbmNsb3NlZCBBbGdlYnJhaWMgRGF0YSBUeXBlcyoqIC0gQWxsIHN1YnR5cGVzIG9mIGFuIEFEVCBhcmUgZ3JvdXBlZCBpbiBhIHNpbmdsZSBgYWR0YCBub2RlLgoKIyMjIE92ZXJ2aWV3CkV4YW1wbGVzIGFuZCBtb3JlIHVzYWdlIGRldGFpbHMgY2FuIGJlIGZvdW5kIGluIFt0ZXN0c10oaHR0cHM6Ly9naXRodWIuY29tL3drYXJ3YWNraS90cnVzdC90cmVlL21hc3Rlci9zcmMvbGliL3Rlc3QpLgoKKipEYXRhIFR5cGVzOioqCi0gKipTaW1wbGUgVHlwZXM6KioKICAtIGB0eXBlOiBib29sYCAtIGVxdWl2YWxlbnQgdG8gT3BlbkFQSSBgdHlwZTogYm9vbGVhbmAKICAtIGB0eXBlOiBpbnRgIC0gZXF1aXZhbGVudCB0byBPcGVuQVBJIGB0eXBlOiBpbnRlZ2VyYCB3aXRoIGBmb3JtYXQ6IGludDY0YAogIC0gYHR5cGU6IGRlY2AgLSBlcXVpdmFsZW50IHRvIE9wZW5BUEkgYHR5cGU6IG51bWJlcmAKICAtIGB0eXBlOiBzdHJgIC0gZXF1aXZhbGVudCB0byBPcGVuQVBJIGB0eXBlOiBzdHJpbmdgCiAgLSBgdHlwZTogZW51bWAgLSBlcXVpdmFsZW50IHRvIE9wZW5BUEkgYHR5cGU6IHN0cmluZ2Agd2l0aCBgZW51bWAKLSAqKkNvbXBsZXggVHlwZXM6KioKICAtIGB0eXBlOiBvYmpgIC0gZXF1aXZhbGVudCB0byBPcGVuQVBJIGB0eXBlOiBvYmplY3RgCiAgLSBgdHlwZTogc2VxYCAtIGVxdWl2YWxlbnQgdG8gT3BlbkFQSSBgdHlwZTogYXJyYXlgCiAgLSBgdHlwZTogbWFwYCAtIGVxdWl2YWxlbnQgdG8gT3BlbkFQSSBgdHlwZTogb2JqZWN0YCB3aXRoIGBhZGRpdGlvbmFsUHJvcGVydGllc2AKLSAqKlNwZWNpYWwgVHlwZXM6KioKICAtIGB0eXBlOiBhbGlhc2AgLSBlcXVpdmFsZW50IHRvIE9wZW5BUEkgYCRyZWZgCiAgLSBgdHlwZTogc3RydWN0YCAtIGVxdWl2YWxlbnQgdG8gT3BlbkFQSSBlbXB0eSBzY2hlbWEgKGB7fWApCiAgLSBgdHlwZTogY29uc3RgIC0gZXF1aXZhbGVudCB0byBPcGVuQVBJIGBjb25zdGAKCiMjIyBDb21tb24gVXNlIENhc2VzCgoqKkluY2x1ZGluZyBWYXJpYWJsZXMgZnJvbSBPdGhlciBUeXBlczoqKgogIGBgYHlhbWwKICBQYXJlbnQ6CiAgICB0eXBlOiBvYmoKICAgIHZhcnM6CiAgICAgIHBhcmVudFZhcjoKICAgICAgICB0eXBlOiBkZWMKICBBbm90aGVyUGFyZW50OgogICAgdHlwZTogb2JqCiAgICB2YXJzOgogICAgICBhbm90aGVyUGFyZW50VmFyOgogICAgICAgIHR5cGU6IGJvb2wKICBXaXRoUGFyZW50c1ZhcnM6CiAgICB0eXBlOiBvYmoKICAgIG1peDoKICAgICAgLSBwYXRoOiAiZGVmcy5QYXJlbnQiCiAgICAgIC0gcGF0aDogImRlZnMuQW5vdGhlclBhcmVudCIKICAgIHZhcnM6CiAgICAgIG93blZhcjoKICAgICAgICB0eXBlOiBpbnQKICBgYGAKUmVzdWx0cyBpbjoKICBgYGBqc29uCiAgewogICAgInBhcmVudFZhciI6IDEuMCwKICAgICJhbm90aGVyUGFyZW50VmFyIjogdHJ1ZSwKICAgICJvd25WYXIiOiAxCiAgfQogIGBgYAoKKipBbGdlYnJhaWMgRGF0YSBUeXBlcyAoVW5pb24gVHlwZXMpOioqCiAgYGBgeWFtbAogIEFkdFR5cGU6CiAgICB0eXBlOiBvYmoKICAgIHZhcnM6IAogICAgICBkaXNjcmltaW5hdG9yVmFyOgogICAgICAgIHR5cGU6IHN0cgogICAgICBzb21lT3RoZXJWYXI6CiAgICAgICAgdHlwZTogZGVjCiAgICBhZHQ6CiAgICAgIHZhcjogZGlzY3JpbWluYXRvclZhcgogICAgICBtYXA6CiAgICAgICAgZmlyc3RTdWJ0eXBlOgogICAgICAgICAgdmFyczoKICAgICAgICAgICAgZmlyc3RTdWJ0eXBlVmFyOgogICAgICAgICAgICAgIHR5cGU6IGludAogICAgICAgIHNlY29uZFN1YnR5cGU6CiAgICAgICAgICB2YXJzOgogICAgICAgICAgICBzZWNvbmRTdWJ0eXBlVmFyOgogICAgICAgICAgICAgIHR5cGU6IGJvb2wKICBgYGAKSW50ZXJwcmV0ZWQgYXM6CiAgYGBganNvbgogIHsKICAgICJkaXNjcmltaW5hdG9yVmFyIjogImZpcnN0U3VidHlwZSIsCiAgICAic29tZU90aGVyVmFyIjogMS4wLAogICAgImZpcnN0U3VidHlwZVZhciI6IDEKICB9CiAgYGBgCiAgYGBganNvbgogIHsKICAgICJkaXNjcmltaW5hdG9yVmFyIjogInNlY29uZFN1YnR5cGUiLAogICAgInNvbWVPdGhlclZhciI6IDEuMCwKICAgICJzZWNvbmRTdWJ0eXBlVmFyIjogdHJ1ZQogIH0KICBgYGAKCgoqKkdlbmVyaWMgVHlwZXM6KioKICBgYGB5YW1sCiAgZGVmczoKICAgIFNvbWVOYW1lZFN0cmluZzoKICAgICAgdHlwZTogc3RyCiAgICBQYXJhbWV0ZXJpemVkVHlwZToKICAgICAgdHlwZTogb2JqCiAgICAgIHZhcnM6CiAgICAgICAgdmFyT2ZQYXJhbUFiY1R5cGU6CiAgICAgICAgICBwYXJhbTogUGFyYW1BYmMgIyB0byBkZWNsYXJlIGEgZ2VuZXJpYyB0eXBlLCB5b3UgbmVlZCB0byBzaW1wbHkgdXNlIGEgJ3BhcmFtJyBrZXl3b3JkCiAgICAgICAgdmFyT2ZQYXJhbVh5elR5cGU6CiAgICAgICAgICBwYXJhbTogUGFyYW1YeXogIyBzaW1pbGFybHkgdG8gdGhlIGFib3ZlLCB0aGlzIHRpbWUgd2l0aCBhIGRpZmZlcmVudCBuYW1lCiAgICAgICAgYW5vdGVyVmFyT2ZQYXJhbVh5elR5cGU6CiAgICAgICAgICBwYXJhbTogUGFyYW1YeXogIyBzaW1pbGFybHkgdG8gdGhlIGFib3ZlLCB0aGlzIHRpbWUgd2l0aCBhIGRpZmZlcmVudCBuYW1lCiAgICBTdWJ0eXBlT2ZQYXJhbWV0ZXJpemVkVHlwZToKICAgICAgdHlwZTogb2JqCiAgICAgIGV4dDogIyBleHRlbmRpbmcgYSBnZW5lcmljIHR5cGUKICAgICAgICBwYXRoOiAnZGVmcy5QYXJhbWV0ZXJpemVkVHlwZScKICAgICAgICBhcmdzOiAjIHdpdGggYmVsb3cgdHlwZS1hcmd1bWVudHMKICAgICAgICAgIFBhcmFtQWJjOgogICAgICAgICAgICB0eXBlOiBib29sCiAgICAgICAgICBQYXJhbVh5ejoKICAgICAgICAgICAgcGF0aDogJ2RlZnMuU29tZVR5cGUnCiAgYGBgCkVxdWl2YWxlbnQgdG86CiAgYGBgamF2YQogIGludGVyZmFjZSBQYXJhbWV0ZXJpemVkVHlwZTxQYXJhbUFiYywgUGFyYW1YeXo+IHsgCiAgICBQYXJhbUFiYyB2YXJPZlBhcmFtQWJjVHlwZTsgCiAgICBQYXJhbVh5eiB2YXJPZlBhcmFtWHl6VHlwZTsgCiAgICBQYXJhbVh5eiBhbm90ZXJWYXJPZlBhcmFtWHl6VHlwZTsgCiAgfQogIGludGVyZmFjZSBTdWJ0eXBlT2ZQYXJhbWV0ZXJpemVkVHlwZSBleHRlbmRzIFBhcmFtZXRlcml6ZWRUeXBlPEJvb2xlYW4sIFNvbWVUeXBlPiB7IH0KICBgYGAKCiMjIyBPcGVuQVBJIENvbnZlcnNpb24KCiogQ29udHJvbCB0aGUgbGF5b3V0IG9mIHRoZSBnZW5lcmF0ZWQgVHJ1c3Qgc3BlYyB3aXRoIHRoZSBgLWxgIG9wdGlvbi4gRm9yIGluc3RhbmNlLCBzZXR0aW5nIGl0IHRvIGB0YWdgIG9yZ2FuaXplcyB0aGUgVHJ1c3Qgc3BlYyBieSBPcGVuQVBJIHRhZ3MsIGFzIHNob3duIGluIHRoaXMgW2V4YW1wbGVdKGh0dHBzOi8vZ2l0aHViLmNvbS93a2Fyd2Fja2kvdHJ1c3QvYmxvYi9tYXN0ZXIvdGVzdC9pbnRlZ3JhdGlvbi9zcGVjcy9vcGVuYXBpX2Zhc3RhcGkvYXBpLnltbCNMOSkuCgojIyBDb2RlIEdlbmVyYXRpb24KCiMjIyBVc2FnZQoKIyMjIyBXaXRoIERvY2tlcgpQcmVyZXF1aXNpdGVzOgotIFtEb2NrZXJdKGh0dHBzOi8vZG9jcy5kb2NrZXIuY29tL2VuZ2luZS9pbnN0YWxsLykKICBgYGBzaGVsbAogICQgLi9kb2NrZXIvYnVpbGQuc2gKICAkIGRvY2tlciBydW4gdHJ1c3QKICBgYGAKCiMjIyMgRnJvbSBTb3VyY2UKUHJlcmVxdWlzaXRlczoKLSBbUnVzdF0oaHR0cHM6Ly93d3cucnVzdC1sYW5nLm9yZy90b29scy9pbnN0YWxsKQogIGBgYHNoZWxsCiAgJCBjYXJnbyBydW4gdHJ1c3QKICBgYGAKCiMjIyBTdXBwb3J0ZWQgR2VuZXJhdG9yczoKLSBQeXRob24gSFRUUCBTZXJ2ZXIgKFtmYXN0YXBpXShodHRwczovL2dpdGh1Yi5jb20vdGlhbmdvbG8vZmFzdGFwaSkpCi0gUHl0aG9uIEhUVFAgQ2xpZW50IChbaHR0cHhdKGh0dHBzOi8vZ2l0aHViLmNvbS9lbmNvZGUvaHR0cHgpKQoKIyMjIyBFeHBlcmltZW50YWwgR2VuZXJhdG9yczoKPiA6ZXhjbGFtYXRpb246IE5vdCBmdWxseSBpbXBsZW1lbnRlZC4gVXNlIGF0IHlvdXIgb3duIHJpc2suCgotIEtvdGxpbiBIVFRQIFNlcnZlciAoW3NwcmluZ10oaHR0cHM6Ly9naXRodWIuY29tL3NwcmluZy1wcm9qZWN0cy9zcHJpbmctZnJhbWV3b3JrKSkKLSBTY2FsYSBIVFRQIFNlcnZlciAoW2Nhc2tdKGh0dHBzOi8vZ2l0aHViLmNvbS9jb20tbGloYW95aS9jYXNrKSk=
- readmeEtag: '"ae08f02f2c7f352831c6817ad06d61eb52eedaf9"'
- readmeLastModified: Thu, 15 Aug 2024 20:26:34 GMT
+ PHA+CiAgPGI+UHl0aG9uIFNlcnZlciBPcGVuQVBJIEdlbmVyYXRvciwgUHl0aG9uIENsaWVudCBPcGVuQVBJIEdlbmVyYXRvciwgS290bGluIFNlcnZlciBPcGVuQVBJIEdlbmVyYXRvcjwvYj4KPC9wPgoKLS0tCgo8cCBhbGlnbj0iY2VudGVyIj4KICA8Yj5Eb2N1bWVudGF0aW9uLCBzb3VyY2UgY29kZTogPGEgaHJlZj0iaHR0cHM6Ly9naXRodWIuY29tL3drYXJ3YWNraS9weXRob24tb3BlbmFwaS1nZW5lcmF0b3ItcnVzdCIgdGFyZ2V0PSJfYmxhbmsiPmh0dHBzOi8vZ2l0aHViLmNvbS93a2Fyd2Fja2kvcHl0aG9uLW9wZW5hcGktZ2VuZXJhdG9yLXJ1c3Q8L2E+PC9iPgo8L3A+CgotLS0KIyBUcnVzdCBTcGVjCgpUcnVzdCBTcGVjIGlzIGEgd2ViIGludGVncmF0aW9uIHNwZWNpZmljYXRpb24gYW5kIGEgc2V0IG9mIGNvZGUgZ2VuZXJhdG9ycyBhaW1pbmcgdG8gYmUgYSBzdWJzdGl0dXRlIGZvciBPcGVuQVBJLiBJdCBwcm92aWRlcyBhIHVuaWZpZWQgd2F5IHRvIGRlc2NyaWJlIGRhdGEgdHJhbnNmZXIgaW50ZXJmYWNlcyBhbmQgZ2VuZXJhdGVzIG1vZGVybiwgdHlwZS1zYWZlIGNvZGUuCgojIyBUYWJsZSBvZiBDb250ZW50cwotIFsqKnRsZHI7IEkganVzdCB3YW50IHRvIGdsdWUgbXkgc2VydmljZXMgdG9nZXRoZXIqKl0oI2ktanVzdC13YW50LXRvLWdsdWUtbXktc2VydmljZXMtdG9nZXRoZXIpCi0gW1NwZWNpZmljYXRpb25dKCNzcGVjaWZpY2F0aW9uKQogIC0gW092ZXJ2aWV3XSgjb3ZlcnZpZXcpCiAgLSBbQ29tbW9uIFVzZSBDYXNlc10oI2NvbW1vbi11c2UtY2FzZXMpCiAgLSBbT3BlbkFQSSBDb252ZXJzaW9uXSgjb3BlbmFwaS1jb252ZXJzaW9uKQotIFtDb2RlIEdlbmVyYXRpb25dKCNjb2RlLWdlbmVyYXRpb24pCiAgLSBbVXNhZ2VdKCN1c2FnZSkKICAgIC0gW1dpdGggRG9ja2VyXSgjd2l0aC1kb2NrZXIpCiAgICAtIFtGcm9tIFNvdXJjZV0oI2Zyb20tc291cmNlKQogIC0gW1N1cHBvcnRlZCBHZW5lcmF0b3JzXSgjc3VwcG9ydGVkLWdlbmVyYXRvcnMpCiAgICAtIFtFeHBlcmltZW50YWwgR2VuZXJhdG9yc10oI2V4cGVyaW1lbnRhbC1nZW5lcmF0b3JzKQoKIyMgSSBqdXN0IHdhbnQgdG8gZ2x1ZSBteSBzZXJ2aWNlcyB0b2dldGhlcgpJbnN0YWxsIFRydXN0OgpgYGBzaGVsbAokIHBpcCBpbnN0YWxsIHRydXN0c3BlY2NsaQpgYGAKVGhlbiwgcnVuOgpgYGBzaGVsbAokIHRydXN0CgpVc2FnZTogdHJ1c3QgPENPTU1BTkQ+CgpDb21tYW5kczoKZnJvbS1vcGVuLWFwaSAgCnRvLW9wZW4tYXBpICAgIApnZW5lcmF0ZSAgICAgICAKaGVscCAgICAgICAgICAgUHJpbnQgdGhpcyBtZXNzYWdlIG9yIHRoZSBoZWxwIG9mIHRoZSBnaXZlbiBzdWJjb21tYW5kKHMpCgpPcHRpb25zOgotaCwgLS1oZWxwICBQcmludCBoZWxwCmBgYAoKLSBJZiB5b3UgYWxyZWFkeSBoYXZlIGFuIE9wZW5BUEkgc3BlYzoKICAxLiBmaXJzdCBjb252ZXJ0IGl0IHRvIFRydXN0IHNwZWMgd2l0aCBgZnJvbS1vcGVuLWFwaWAgY29tbWFuZAogIDIuIGFuZCB0aGVuIGdlbmVyYXRlIHRoZSBnbHVlIGNvZGUgd2l0aCBgZ2VuZXJhdGVgIGNvbW1hbmQuCgogID4gOmV4Y2xhbWF0aW9uOiBOb3RlIHRoYXQgeW91IG1heSBlYXNpbHkgYXV0b21hdGUgdGhlIHdob2xlIHByb2Nlc3MgY29tYmluaW5nIHRoZSB0d28gc3RlcHMgYWJvdmUsIGhvd2V2ZXIgaXQgaXMgcmVjb21tZW5kZWQgdG8gbWFrZSBhIG1pZ3JhdGlvbiBvbmNlIGFuZCBsZXZlcmFnZSBUcnVzdCBzcGVjJ3MgZXhwcmVzc2l2ZW5lc3MgaW4gbG9uZy10ZXJtLgoKLSAqKldpdGhvdXQgYW4gT3BlbkFQSSBzcGVjOioqCiAgLSBTdGFydCBkaXJlY3RseSB3aXRoIFRydXN0IHNwZWMuCgotICoqVG8gY29udGludWUgdXNpbmcgT3BlbkFQSSBmb3IgY29kZSBnZW5lcmF0aW9uOioqCiAgLSBVc2UgVHJ1c3Qgc3BlYyBhcyBhbiBpbnRlcm1lZGlhdGUgZm9ybWF0IHdpdGggdGhlIGB0by1vcGVuLWFwaWAgY29tbWFuZC4KCiMjIFNwZWNpZmljYXRpb24KVHJ1c3Qgc3BlY2lmaWNhdGlvbiBlbmhhbmNlcyBjdXJyZW50IGludGVncmF0aW9uIHN0YW5kYXJkcyBsaWtlIFtPcGVuQVBJXShodHRwczovL2dpdGh1Yi5jb20vT0FJL09wZW5BUEktU3BlY2lmaWNhdGlvbikuIEtleSBiZW5lZml0cyBpbmNsdWRlOgotICoqQ2xlYXIgTm90YXRpb24qKiAtIFNpbmdsZSB3YXkgdG8gbW9kZWwgYW5kIGludGVycHJldCBhbiBBUEkuCi0gKipHZW5lcmljIFR5cGVzKiogLSBDdXN0b21pemFibGUgdHlwZXMgd2l0aCBwYXJhbWV0ZXJzIGZvciBkaWZmZXJlbnQgY29udGV4dHMuCi0gKipNaW5pbWFsaXN0aWMqKiAtIFNpbXBsZSwgZWZmaWNpZW50IGxhbmd1YWdlIHdpdGhvdXQgcmVkdW5kYW50IGZlYXR1cmVzLgotICoqV2ViIFN5c3RlbSBJbnRlZ3JhdGlvbiBGb2N1c2VkKiogLSBJZGVhbCBmb3IgdHlwZS1zYWZlIHN5c3RlbSBpbnRlZ3JhdGlvbi4KLSAqKkhpZ2hseSBDdXN0b21pemFibGUqKiAtIEV4dGVuc2l2ZSBbaGFuZGxlYmFyc10oaHR0cHM6Ly9naXRodWIuY29tL3N1bm5nODcvaGFuZGxlYmFycy1ydXN0KSBoZWxwZXJzIGZvciB0ZW1wbGF0ZSBtb2RpZmljYXRpb24uCi0gKipQcm90b2NvbC1BZ25vc3RpYyoqIC0gRGVzaWduZWQgZm9yIEhUVFAgYnV0IGFwcGxpY2FibGUgdG8gYW55IEFQSSB0eXBlLgoKSXQgYWRkcmVzc2VzIGluaGVyZW50IE9wZW5BUEkgaXNzdWVzIHdpdGg6Ci0gKipFbmNsb3NlZCBBbGdlYnJhaWMgRGF0YSBUeXBlcyoqIC0gQWxsIHN1YnR5cGVzIG9mIGFuIEFEVCBhcmUgZ3JvdXBlZCBpbiBhIHNpbmdsZSBgYWR0YCBub2RlLgoKIyMjIE92ZXJ2aWV3CkV4YW1wbGVzIGFuZCBtb3JlIHVzYWdlIGRldGFpbHMgY2FuIGJlIGZvdW5kIGluIFt0ZXN0c10oaHR0cHM6Ly9naXRodWIuY29tL3drYXJ3YWNraS9weXRob24tb3BlbmFwaS1nZW5lcmF0b3ItcnVzdC90cmVlL21hc3Rlci9zcmMvbGliL3Rlc3QpLgoKKipEYXRhIFR5cGVzOioqCi0gKipTaW1wbGUgVHlwZXM6KioKICAtIGB0eXBlOiBib29sYCAtIGVxdWl2YWxlbnQgdG8gT3BlbkFQSSBgdHlwZTogYm9vbGVhbmAKICAtIGB0eXBlOiBpbnRgIC0gZXF1aXZhbGVudCB0byBPcGVuQVBJIGB0eXBlOiBpbnRlZ2VyYCB3aXRoIGBmb3JtYXQ6IGludDY0YAogIC0gYHR5cGU6IGRlY2AgLSBlcXVpdmFsZW50IHRvIE9wZW5BUEkgYHR5cGU6IG51bWJlcmAKICAtIGB0eXBlOiBzdHJgIC0gZXF1aXZhbGVudCB0byBPcGVuQVBJIGB0eXBlOiBzdHJpbmdgCiAgLSBgdHlwZTogZW51bWAgLSBlcXVpdmFsZW50IHRvIE9wZW5BUEkgYHR5cGU6IHN0cmluZ2Agd2l0aCBgZW51bWAKLSAqKkNvbXBsZXggVHlwZXM6KioKICAtIGB0eXBlOiBvYmpgIC0gZXF1aXZhbGVudCB0byBPcGVuQVBJIGB0eXBlOiBvYmplY3RgCiAgLSBgdHlwZTogc2VxYCAtIGVxdWl2YWxlbnQgdG8gT3BlbkFQSSBgdHlwZTogYXJyYXlgCiAgLSBgdHlwZTogbWFwYCAtIGVxdWl2YWxlbnQgdG8gT3BlbkFQSSBgdHlwZTogb2JqZWN0YCB3aXRoIGBhZGRpdGlvbmFsUHJvcGVydGllc2AKLSAqKlNwZWNpYWwgVHlwZXM6KioKICAtIGB0eXBlOiBhbGlhc2AgLSBlcXVpdmFsZW50IHRvIE9wZW5BUEkgYCRyZWZgCiAgLSBgdHlwZTogc3RydWN0YCAtIGVxdWl2YWxlbnQgdG8gT3BlbkFQSSBlbXB0eSBzY2hlbWEgKGB7fWApCiAgLSBgdHlwZTogY29uc3RgIC0gZXF1aXZhbGVudCB0byBPcGVuQVBJIGBjb25zdGAKCiMjIyBDb21tb24gVXNlIENhc2VzCgoqKkluY2x1ZGluZyBWYXJpYWJsZXMgZnJvbSBPdGhlciBUeXBlczoqKgogIGBgYHlhbWwKICBQYXJlbnQ6CiAgICB0eXBlOiBvYmoKICAgIHZhcnM6CiAgICAgIHBhcmVudFZhcjoKICAgICAgICB0eXBlOiBkZWMKICBBbm90aGVyUGFyZW50OgogICAgdHlwZTogb2JqCiAgICB2YXJzOgogICAgICBhbm90aGVyUGFyZW50VmFyOgogICAgICAgIHR5cGU6IGJvb2wKICBXaXRoUGFyZW50c1ZhcnM6CiAgICB0eXBlOiBvYmoKICAgIG1peDoKICAgICAgLSBwYXRoOiAiZGVmcy5QYXJlbnQiCiAgICAgIC0gcGF0aDogImRlZnMuQW5vdGhlclBhcmVudCIKICAgIHZhcnM6CiAgICAgIG93blZhcjoKICAgICAgICB0eXBlOiBpbnQKICBgYGAKUmVzdWx0cyBpbjoKICBgYGBqc29uCiAgewogICAgInBhcmVudFZhciI6IDEuMCwKICAgICJhbm90aGVyUGFyZW50VmFyIjogdHJ1ZSwKICAgICJvd25WYXIiOiAxCiAgfQogIGBgYAoKKipBbGdlYnJhaWMgRGF0YSBUeXBlcyAoVW5pb24gVHlwZXMpOioqCiAgYGBgeWFtbAogIEFkdFR5cGU6CiAgICB0eXBlOiBvYmoKICAgIHZhcnM6IAogICAgICBkaXNjcmltaW5hdG9yVmFyOgogICAgICAgIHR5cGU6IHN0cgogICAgICBzb21lT3RoZXJWYXI6CiAgICAgICAgdHlwZTogZGVjCiAgICBhZHQ6CiAgICAgIHZhcjogZGlzY3JpbWluYXRvclZhcgogICAgICBtYXA6CiAgICAgICAgZmlyc3RTdWJ0eXBlOgogICAgICAgICAgdmFyczoKICAgICAgICAgICAgZmlyc3RTdWJ0eXBlVmFyOgogICAgICAgICAgICAgIHR5cGU6IGludAogICAgICAgIHNlY29uZFN1YnR5cGU6CiAgICAgICAgICB2YXJzOgogICAgICAgICAgICBzZWNvbmRTdWJ0eXBlVmFyOgogICAgICAgICAgICAgIHR5cGU6IGJvb2wKICBgYGAKSW50ZXJwcmV0ZWQgYXM6CiAgYGBganNvbgogIHsKICAgICJkaXNjcmltaW5hdG9yVmFyIjogImZpcnN0U3VidHlwZSIsCiAgICAic29tZU90aGVyVmFyIjogMS4wLAogICAgImZpcnN0U3VidHlwZVZhciI6IDEKICB9CiAgYGBgCiAgYGBganNvbgogIHsKICAgICJkaXNjcmltaW5hdG9yVmFyIjogInNlY29uZFN1YnR5cGUiLAogICAgInNvbWVPdGhlclZhciI6IDEuMCwKICAgICJzZWNvbmRTdWJ0eXBlVmFyIjogdHJ1ZQogIH0KICBgYGAKCgoqKkdlbmVyaWMgVHlwZXM6KioKICBgYGB5YW1sCiAgZGVmczoKICAgIFNvbWVOYW1lZFN0cmluZzoKICAgICAgdHlwZTogc3RyCiAgICBQYXJhbWV0ZXJpemVkVHlwZToKICAgICAgdHlwZTogb2JqCiAgICAgIHZhcnM6CiAgICAgICAgdmFyT2ZQYXJhbUFiY1R5cGU6CiAgICAgICAgICBwYXJhbTogUGFyYW1BYmMgIyB0byBkZWNsYXJlIGEgZ2VuZXJpYyB0eXBlLCB5b3UgbmVlZCB0byBzaW1wbHkgdXNlIGEgJ3BhcmFtJyBrZXl3b3JkCiAgICAgICAgdmFyT2ZQYXJhbVh5elR5cGU6CiAgICAgICAgICBwYXJhbTogUGFyYW1YeXogIyBzaW1pbGFybHkgdG8gdGhlIGFib3ZlLCB0aGlzIHRpbWUgd2l0aCBhIGRpZmZlcmVudCBuYW1lCiAgICAgICAgYW5vdGVyVmFyT2ZQYXJhbVh5elR5cGU6CiAgICAgICAgICBwYXJhbTogUGFyYW1YeXogIyBzaW1pbGFybHkgdG8gdGhlIGFib3ZlLCB0aGlzIHRpbWUgd2l0aCBhIGRpZmZlcmVudCBuYW1lCiAgICBTdWJ0eXBlT2ZQYXJhbWV0ZXJpemVkVHlwZToKICAgICAgdHlwZTogb2JqCiAgICAgIGV4dDogIyBleHRlbmRpbmcgYSBnZW5lcmljIHR5cGUKICAgICAgICBwYXRoOiAnZGVmcy5QYXJhbWV0ZXJpemVkVHlwZScKICAgICAgICBhcmdzOiAjIHdpdGggYmVsb3cgdHlwZS1hcmd1bWVudHMKICAgICAgICAgIFBhcmFtQWJjOgogICAgICAgICAgICB0eXBlOiBib29sCiAgICAgICAgICBQYXJhbVh5ejoKICAgICAgICAgICAgcGF0aDogJ2RlZnMuU29tZVR5cGUnCiAgYGBgCkVxdWl2YWxlbnQgdG86CiAgYGBgamF2YQogIGludGVyZmFjZSBQYXJhbWV0ZXJpemVkVHlwZTxQYXJhbUFiYywgUGFyYW1YeXo+IHsgCiAgICBQYXJhbUFiYyB2YXJPZlBhcmFtQWJjVHlwZTsgCiAgICBQYXJhbVh5eiB2YXJPZlBhcmFtWHl6VHlwZTsgCiAgICBQYXJhbVh5eiBhbm90ZXJWYXJPZlBhcmFtWHl6VHlwZTsgCiAgfQogIGludGVyZmFjZSBTdWJ0eXBlT2ZQYXJhbWV0ZXJpemVkVHlwZSBleHRlbmRzIFBhcmFtZXRlcml6ZWRUeXBlPEJvb2xlYW4sIFNvbWVUeXBlPiB7IH0KICBgYGAKCiMjIyBPcGVuQVBJIENvbnZlcnNpb24KCiogQ29udHJvbCB0aGUgbGF5b3V0IG9mIHRoZSBnZW5lcmF0ZWQgVHJ1c3Qgc3BlYyB3aXRoIHRoZSBgLWxgIG9wdGlvbi4gRm9yIGluc3RhbmNlLCBzZXR0aW5nIGl0IHRvIGB0YWdgIG9yZ2FuaXplcyB0aGUgVHJ1c3Qgc3BlYyBieSBPcGVuQVBJIHRhZ3MsIGFzIHNob3duIGluIHRoaXMgW2V4YW1wbGVdKGh0dHBzOi8vZ2l0aHViLmNvbS93a2Fyd2Fja2kvcHl0aG9uLW9wZW5hcGktZ2VuZXJhdG9yLXJ1c3QvYmxvYi9tYXN0ZXIvdGVzdC9pbnRlZ3JhdGlvbi9zcGVjcy9vcGVuYXBpX2Zhc3RhcGkvYXBpLnltbCNMOSkuCgojIyBDb2RlIEdlbmVyYXRpb24KCiMjIyBVc2FnZQoKIyMjIyBXaXRoIERvY2tlcgpQcmVyZXF1aXNpdGVzOgotIFtEb2NrZXJdKGh0dHBzOi8vZG9jcy5kb2NrZXIuY29tL2VuZ2luZS9pbnN0YWxsLykKICBgYGBzaGVsbAogICQgLi9kb2NrZXIvYnVpbGQuc2gKICAkIGRvY2tlciBydW4gdHJ1c3QKICBgYGAKCiMjIyMgRnJvbSBTb3VyY2UKUHJlcmVxdWlzaXRlczoKLSBbUnVzdF0oaHR0cHM6Ly93d3cucnVzdC1sYW5nLm9yZy90b29scy9pbnN0YWxsKQogIGBgYHNoZWxsCiAgJCBjYXJnbyBydW4gdHJ1c3QKICBgYGAKCiMjIyBTdXBwb3J0ZWQgR2VuZXJhdG9yczoKLSBQeXRob24gSFRUUCBTZXJ2ZXIgKFtmYXN0YXBpXShodHRwczovL2dpdGh1Yi5jb20vdGlhbmdvbG8vZmFzdGFwaSkpCi0gUHl0aG9uIEhUVFAgQ2xpZW50IChbaHR0cHhdKGh0dHBzOi8vZ2l0aHViLmNvbS9lbmNvZGUvaHR0cHgpKQoKIyMjIyBFeHBlcmltZW50YWwgR2VuZXJhdG9yczoKPiA6ZXhjbGFtYXRpb246IE5vdCBmdWxseSBpbXBsZW1lbnRlZC4gVXNlIGF0IHlvdXIgb3duIHJpc2suCgotIEtvdGxpbiBIVFRQIFNlcnZlciAoW3NwcmluZ10oaHR0cHM6Ly9naXRodWIuY29tL3NwcmluZy1wcm9qZWN0cy9zcHJpbmctZnJhbWV3b3JrKSkKLSBTY2FsYSBIVFRQIFNlcnZlciAoW2Nhc2tdKGh0dHBzOi8vZ2l0aHViLmNvbS9jb20tbGloYW95aS9jYXNrKSk=
+ readmeEtag: '"33bfbc3d56519bff5edf11fbccff9bd4ab36f0c7"'
+ readmeLastModified: Thu, 22 Aug 2024 17:25:31 GMT
repositoryId: 834278095
description: >-
Typesafe Python Client and Server OpenAPI generator written in Rust /
Trust
created: '2024-07-26T20:36:55Z'
- updated: '2024-08-21T20:04:11Z'
+ updated: '2024-08-22T17:25:39Z'
language: Rust
archived: false
stars: 1
@@ -25263,8 +25263,8 @@
owner: wkarwacki
logo: https://avatars.githubusercontent.com/u/79852127?v=4
license: Apache-2.0
- repoEtag: '"aada73d1388ccc09f874d1caf00cffd02ab31c76cca25a7e75e8f0651c0ffdf7"'
- repoLastModified: Wed, 21 Aug 2024 20:04:11 GMT
+ repoEtag: '"f88314699e6351d5c49ffeee2c8bee7a81232c687971c22f6b5c48c1a693acc3"'
+ repoLastModified: Thu, 22 Aug 2024 17:25:39 GMT
category: Parsers
foundInMaster: true
oldLocations:
@@ -25515,23 +25515,23 @@
id: 9d8896537414d70c7c57f9878d6430bb
repositoryMetadata:
base64Readme: >-
- IyBbVHlwZWRvYyBEb2N1bWVudGF0aW9uIFdlYnNpdGVdKGh0dHBzOi8vc3Vkb2t1cnUuZ2l0aHViLmlvL0JhY2tlbmQvKTxicj4KCiMgVG9kbwoKLSBbIF0gQWRkIGxpY2Vuc2UgZmlsZSBhbmQgZGlzdHJpYnV0ZSB0byBhbGwgcmVwb3MgdXNpbmcgR2l0SHViIEFjdGlvbiAoVGhvbWFzKQotIFsgXSBGaW5pc2ggd3JpdGluZyBpbnRlZ3JhdGlvbiB0ZXN0cyBmb3IgcHV6emxlIGVuZHBvaW50IChUaG9tYXMpCi0gWyBdIFdyaXRlIEdpdEh1YiBob29rIHRvIHJ1biBhbGwgdGVzdHMgYmVmb3JlIFB1c2ggdG8gcmVwbyAoVGhvbWFzKQotIFt4XSBTZXQgdXAgRGV2IGFuZCBQcm9kIExhbWJkYSBlbnZpcm9ubWVudHMgKFRob21hcy9HcmVnb3J5KQotIFsgXSBBZGQgTWVybWFpZCBkb2N1bWVudGF0aW9uIGFuZCBkaXN0cmlidXRlIHRvIGFsbCByZXBvcyB1c2luZyBHaXRIdWIgQWN0aW9uIChUaG9tYXMpCi0gWyBdIENsZWFuIHVwIGRvY2tlciBpbXBsZW1lbnRhdGlvbiAoYXV0by1yZWJ1aWxkKSAoVGhvbWFzKQotIFsgXSBEaXNwbGF5IGludGVncmF0aW9uIHRlc3QgcmVzdWx0cyB3aXRoIHJlcG9ydGVyIChUaG9tYXMpCi0gWyBdIERlY2lkZSBvbiBpbml0aWFsIEpTT04gc3RydWN0dXJlIGZvciByZW1haW5pbmcgZW5kcG9pbnRzIChUZWFtKQotIFsgXSBXcml0ZSBsb2dpYyBmb3IgcmVtYWluaW5nIGVuZHBvaW50cyAoRGFuaWVsKQotIFsgXSBXcml0ZSBzYW5pdGF0aW9uIGFuZCB2YWxpZGF0aW9uIGZvciByZW1haW5pbmcgZW5kcG9pbnRzIChEYW5pZWwpCi0gWyBdIFdyaXRlIFBvc3RtYW4gaW50ZWdyYXRpb24gdGVzdHMgZm9yIHJlbWFpbmluZyBlbmRwb2ludHMgKERhbmllbCkKLSBbIF0gU2V0IHVwIEF1dGgwIHRva2VuIGF1dGhlbnRpY2F0aW9uIChUaG9tYXMvRGFuaWVsKQotIFsgXSBXcml0ZSB1cCBPcGVuQVBJIHNwZWNpZmljYXRpb25zIGZvciBlbmRwb2ludHMgKFRob21hcy9EYW5pZWwpCi0gWyBdIFJlc29sdmUgcmVtYWluaW5nIGBgYC8vdG9kb2BgYCBpdGVtcyAoVGhvbWFzL0RhbmllbCkKLSBbIF0gRGV0ZXJtaW5lIGhvdyB0byBzZXQgUHJvZCBlbnZpcm9ubWVudCB0byB1c2UgdmVyc2lvbmluZyBjb250cm9sIChUaG9tYXMvR3JlZ29yeSkKLSBbIF0gSW1wbGVtZW50IHVuaXQgdGVzdHMgaWYgbmVlZGVkIChUaG9tYXMvRGFuaWVsKQoKIyBEZXZlbG9wZXIgU2V0dXAKCjEuIEluc3RhbGwgRG9ja2VyIG9uIHlvdXIgbWFjaGluZS4gVHV0b3JpYWwgaXMgbGlua2VkIGJlbG93Ojxicj4KICAgWyFbRG9ja2VyIFR1dG9yaWFsXShodHRwczovL2ltZy55b3V0dWJlLmNvbS92aS8yZXpOcXFhU2pxOC8wLmpwZyldKGh0dHBzOi8vd3d3LnlvdXR1YmUuY29tL3dhdGNoP3Y9MmV6TnFxYVNqcTgpPGJyPgoyLiBUaGUgTW9uZ28gaW1hZ2UgY2FuIGJlIHJ1biB3aXRoIHRoaXMgY29tbWFuZCBpbiB0aGUgcm9vdCBmb2xkZXI6PGJyPgogICBOb3RlIHVzZSBgYGBzdWRvYGBgIG9uIExpbnV4L01hYzxicj4KYGBgY29uc29sZQpucG0gcnVuIGRvY2tlcgpgYGAKMy4gQ3JlYXRlIC5lbnYgZmlsZSB3aXRoIGVudmlyb25tZW50IHZhcmlhYmxlcwo0LiBSdW4gbnBtIGkKNS4gVGhlIGFwcCBjYW4gdGhlbiBiZSBydW4gd2l0aCB0aGUgY29tbWFuZDo8YnI+CmBgYGNvbnNvbGUKbnBtIHJ1biBzdGFydApgYGAKNi4gSW50ZWdyYXRpb24gdGVzdHMgY2FuIGJlIHJ1biB3aGVuIHRoZSBhcHAgaXMgcnVubmluZyB3aXRoIHRoaXMgY29tbWFuZDo8YnI+CmBgYGNvbnNvbGUKbnBtIHJ1biB0ZXN0OmludGVncmF0aW9uCmBgYAoKIyBQb3N0bWFuCgpXZSBhcmUgdXNpbmcgUG9zdG1hbiBmb3IgaW50ZWdyYXRpb24gdGVzdHMuPGJyPgpUaGUgZm9sbG93aW5nIHZpZGVvIGlzIHZlcnkgaGVscGZ1bCBmb3IgdW5kZXJzdGFuZGluZyBob3cgUG9zdG1hbiB3b3JrcyB3aXRoIEdpdEh1Yjo8YnI+ClshW1Bvc3RtYW4gVHV0b3JpYWxdKGh0dHBzOi8vaW1nLnlvdXR1YmUuY29tL3ZpL2NCN21DdVlldUFVLzAuanBnKV0oaHR0cHM6Ly93d3cueW91dHViZS5jb20vd2F0Y2g/dj1jQjdtQ3VZZXVBVSk8YnI+CgojIyMgQmVsb3cgaXMgYW4gZXhhbXBsZSBzdHJ1Y3R1cmUgZm9yIHRlc3RzIGJhc2VkIG9uIFB1enpsZSBlbmRwb2ludApUaGUgUG9zdG1hbiB0ZXN0cyBhcmUgc3RydWN0dXJlZCBiYXNlZCBvbiB0aGUgZW5kcG9pbnQgbmFtZSwgdGhlIHR5cGUgb2YgcmVxdWVzdCwgYW5kIHRoZSBleHBlY3RlZCByZXNwb25zZSBjb2RlPGJyPgoKIVtwb3N0bWFuX3N0cnVjdHVyZS5wbmddKERvY3VtZW50YXRpb24vaW1hZ2VzL3Bvc3RtYW5TdHJ1Y3R1cmUucG5nKTxicj4KClRoaXMgc3RydWN0dXJlIGFsbG93cyB1cyB0byB3cml0ZSB0ZXN0IGNhc2VzIGZvciB0aGUgQ29kZSA0MDAgZm9sZGVyIHdoaWNoIHdvdWxkIGJlIHJ1biBmb3IgYWxsIHRlc3RzIGluIHRoYXQgZm9sZGVyLjxicj4KPGJyPgpBbGwgdGVzdHMgZm9yIHRoZSBTdWRva3VydS1CYWNrZW5kIGhhdmUgYWNjZXNzIHRvIHRoZSBTdWRva3VydS1CYWNrZW5kIFByZS1yZXF1ZXN0IHNjcmlwdHMgYW5kIHRlc3RzLjxicj4KV2UgY3VycmVudGx5IGhhdmUgYSBQcmUtcmVxdWVzdCBzY3JpcHQgdGhhdCBkZWxldGVzIHRoZSB3aG9sZSBkYXRhYmFzZSBiZWZvcmUgZXZlcnkgdGVzdC48YnI+CldlIGFsc28gaGF2ZSBhIGZ1bmN0aW9uIHRoYXQgY2FuIGJlIHVzZWQgZm9yIGFsbCBERUxFVEUgcmVxdWVzdHMgdG8gdmFsaWRhdGUgdGhlIHJlc3BvbnNlLjxicj4KCiFbYmFja2VuZF9wcmVfcmVxdWVzdF9zY3JpcHRzLnBuZ10oRG9jdW1lbnRhdGlvbi9pbWFnZXMvQmFja2VuZC1QcmUtUmVxdWVzdC1TY3JpcHRzLnBuZyk8YnI+CgojIyMjIEluc2lkZSB0aGUgUHV6emxlIGVuZHBvaW50IGZvbGRlciB3ZSBoYXZlIHNoYXJlZCBmdW5jdGlvbnMgdG8gdmFsaWRhdGUgYSBwdXp6bGUgcmVzcG9uc2UgYW5kIHRvIGdlbmVyYXRlIHNoYXJlZCBwdXp6bGUgSlNPTiBmb3IgUHJlLVJlcXVlc3Qgc2NyaXB0cyBmb3Igb3RoZXIgdGVzdHMuPGJyPgoKIVtwdXp6bGVfcmVzcG9uc2VfY2hlY2tlci5wbmddKERvY3VtZW50YXRpb24vaW1hZ2VzL3B1enpsZV9yZXNwb25zZV9jaGVja2VyLnBuZyk8YnI+CiMjIyMgVGhlIGJlbG93IGZ1bmN0aW9ucyB0YWtlIGluIGFuIGludGVnZXIgYW5kIHJldHVybiBlaXRoZXIgdmFsaWQgSlNPTiBvciBhbiBvYmplY3QgZm9yIHJlZmVyZW5jZS48YnI+CiFbc2hhcmVkX3B1enpsZXNfZm9yX3Rlc3RzLnBuZ10oRG9jdW1lbnRhdGlvbi9pbWFnZXMvc2hhcmVkX3B1enpsZXNfZm9yX3Rlc3RzLnBuZyk8YnI+CgojIyMjIEluc2lkZSB0aGUgIkNvZGUgMjAxIiBmb2xkZXIgd2UgaGF2ZSBhIHRlc3QgY2FzZSB0aGF0IHdpbGwgYmUgcnVuIGZvciBhbGwgdGVzdHMgaW5zaWRlIG9mIHRoZSBmb2xkZXIuPGJyPgohW3NoYXJlZF9yZXNwb25zZV9jb2RlX3Rlc3QucG5nXShEb2N1bWVudGF0aW9uL2ltYWdlcy9zaGFyZWRfcmVzcG9uc2VfY29kZV90ZXN0LnBuZyk8YnI+Cg==
- readmeEtag: '"80f9dc1e04e587cdbd128d69f4afc8479aa8b2e5"'
- readmeLastModified: Sun, 12 May 2024 16:01:59 GMT
+ PiBbIUlNUE9SVEFOVF0gIAo+IFRoaXMgcmVwb3NpdG9yeSBpcyByZWFkLW9ubHkgLyBhcmNoaXZlZCBhbmQgd2lsbCBub3QgcmVjaWV2ZSB1cGRhdGVzLgoKIyBbVHlwZWRvYyBEb2N1bWVudGF0aW9uIFdlYnNpdGVdKGh0dHBzOi8vc3Vkb2t1cnUuZ2l0aHViLmlvL0JhY2tlbmQvKTxicj4KCiMgVG9kbwoKLSBbIF0gQWRkIGxpY2Vuc2UgZmlsZSBhbmQgZGlzdHJpYnV0ZSB0byBhbGwgcmVwb3MgdXNpbmcgR2l0SHViIEFjdGlvbiAoVGhvbWFzKQotIFsgXSBGaW5pc2ggd3JpdGluZyBpbnRlZ3JhdGlvbiB0ZXN0cyBmb3IgcHV6emxlIGVuZHBvaW50IChUaG9tYXMpCi0gWyBdIFdyaXRlIEdpdEh1YiBob29rIHRvIHJ1biBhbGwgdGVzdHMgYmVmb3JlIFB1c2ggdG8gcmVwbyAoVGhvbWFzKQotIFt4XSBTZXQgdXAgRGV2IGFuZCBQcm9kIExhbWJkYSBlbnZpcm9ubWVudHMgKFRob21hcy9HcmVnb3J5KQotIFsgXSBBZGQgTWVybWFpZCBkb2N1bWVudGF0aW9uIGFuZCBkaXN0cmlidXRlIHRvIGFsbCByZXBvcyB1c2luZyBHaXRIdWIgQWN0aW9uIChUaG9tYXMpCi0gWyBdIENsZWFuIHVwIGRvY2tlciBpbXBsZW1lbnRhdGlvbiAoYXV0by1yZWJ1aWxkKSAoVGhvbWFzKQotIFsgXSBEaXNwbGF5IGludGVncmF0aW9uIHRlc3QgcmVzdWx0cyB3aXRoIHJlcG9ydGVyIChUaG9tYXMpCi0gWyBdIERlY2lkZSBvbiBpbml0aWFsIEpTT04gc3RydWN0dXJlIGZvciByZW1haW5pbmcgZW5kcG9pbnRzIChUZWFtKQotIFsgXSBXcml0ZSBsb2dpYyBmb3IgcmVtYWluaW5nIGVuZHBvaW50cyAoRGFuaWVsKQotIFsgXSBXcml0ZSBzYW5pdGF0aW9uIGFuZCB2YWxpZGF0aW9uIGZvciByZW1haW5pbmcgZW5kcG9pbnRzIChEYW5pZWwpCi0gWyBdIFdyaXRlIFBvc3RtYW4gaW50ZWdyYXRpb24gdGVzdHMgZm9yIHJlbWFpbmluZyBlbmRwb2ludHMgKERhbmllbCkKLSBbIF0gU2V0IHVwIEF1dGgwIHRva2VuIGF1dGhlbnRpY2F0aW9uIChUaG9tYXMvRGFuaWVsKQotIFsgXSBXcml0ZSB1cCBPcGVuQVBJIHNwZWNpZmljYXRpb25zIGZvciBlbmRwb2ludHMgKFRob21hcy9EYW5pZWwpCi0gWyBdIFJlc29sdmUgcmVtYWluaW5nIGBgYC8vdG9kb2BgYCBpdGVtcyAoVGhvbWFzL0RhbmllbCkKLSBbIF0gRGV0ZXJtaW5lIGhvdyB0byBzZXQgUHJvZCBlbnZpcm9ubWVudCB0byB1c2UgdmVyc2lvbmluZyBjb250cm9sIChUaG9tYXMvR3JlZ29yeSkKLSBbIF0gSW1wbGVtZW50IHVuaXQgdGVzdHMgaWYgbmVlZGVkIChUaG9tYXMvRGFuaWVsKQoKIyBEZXZlbG9wZXIgU2V0dXAKCjEuIEluc3RhbGwgRG9ja2VyIG9uIHlvdXIgbWFjaGluZS4gVHV0b3JpYWwgaXMgbGlua2VkIGJlbG93Ojxicj4KICAgWyFbRG9ja2VyIFR1dG9yaWFsXShodHRwczovL2ltZy55b3V0dWJlLmNvbS92aS8yZXpOcXFhU2pxOC8wLmpwZyldKGh0dHBzOi8vd3d3LnlvdXR1YmUuY29tL3dhdGNoP3Y9MmV6TnFxYVNqcTgpPGJyPgoyLiBUaGUgTW9uZ28gaW1hZ2UgY2FuIGJlIHJ1biB3aXRoIHRoaXMgY29tbWFuZCBpbiB0aGUgcm9vdCBmb2xkZXI6PGJyPgogICBOb3RlIHVzZSBgYGBzdWRvYGBgIG9uIExpbnV4L01hYzxicj4KYGBgY29uc29sZQpucG0gcnVuIGRvY2tlcgpgYGAKMy4gQ3JlYXRlIC5lbnYgZmlsZSB3aXRoIGVudmlyb25tZW50IHZhcmlhYmxlcwo0LiBSdW4gbnBtIGkKNS4gVGhlIGFwcCBjYW4gdGhlbiBiZSBydW4gd2l0aCB0aGUgY29tbWFuZDo8YnI+CmBgYGNvbnNvbGUKbnBtIHJ1biBzdGFydApgYGAKNi4gSW50ZWdyYXRpb24gdGVzdHMgY2FuIGJlIHJ1biB3aGVuIHRoZSBhcHAgaXMgcnVubmluZyB3aXRoIHRoaXMgY29tbWFuZDo8YnI+CmBgYGNvbnNvbGUKbnBtIHJ1biB0ZXN0OmludGVncmF0aW9uCmBgYAoKIyBQb3N0bWFuCgpXZSBhcmUgdXNpbmcgUG9zdG1hbiBmb3IgaW50ZWdyYXRpb24gdGVzdHMuPGJyPgpUaGUgZm9sbG93aW5nIHZpZGVvIGlzIHZlcnkgaGVscGZ1bCBmb3IgdW5kZXJzdGFuZGluZyBob3cgUG9zdG1hbiB3b3JrcyB3aXRoIEdpdEh1Yjo8YnI+ClshW1Bvc3RtYW4gVHV0b3JpYWxdKGh0dHBzOi8vaW1nLnlvdXR1YmUuY29tL3ZpL2NCN21DdVlldUFVLzAuanBnKV0oaHR0cHM6Ly93d3cueW91dHViZS5jb20vd2F0Y2g/dj1jQjdtQ3VZZXVBVSk8YnI+CgojIyMgQmVsb3cgaXMgYW4gZXhhbXBsZSBzdHJ1Y3R1cmUgZm9yIHRlc3RzIGJhc2VkIG9uIFB1enpsZSBlbmRwb2ludApUaGUgUG9zdG1hbiB0ZXN0cyBhcmUgc3RydWN0dXJlZCBiYXNlZCBvbiB0aGUgZW5kcG9pbnQgbmFtZSwgdGhlIHR5cGUgb2YgcmVxdWVzdCwgYW5kIHRoZSBleHBlY3RlZCByZXNwb25zZSBjb2RlPGJyPgoKIVtwb3N0bWFuX3N0cnVjdHVyZS5wbmddKERvY3VtZW50YXRpb24vaW1hZ2VzL3Bvc3RtYW5TdHJ1Y3R1cmUucG5nKTxicj4KClRoaXMgc3RydWN0dXJlIGFsbG93cyB1cyB0byB3cml0ZSB0ZXN0IGNhc2VzIGZvciB0aGUgQ29kZSA0MDAgZm9sZGVyIHdoaWNoIHdvdWxkIGJlIHJ1biBmb3IgYWxsIHRlc3RzIGluIHRoYXQgZm9sZGVyLjxicj4KPGJyPgpBbGwgdGVzdHMgZm9yIHRoZSBTdWRva3VydS1CYWNrZW5kIGhhdmUgYWNjZXNzIHRvIHRoZSBTdWRva3VydS1CYWNrZW5kIFByZS1yZXF1ZXN0IHNjcmlwdHMgYW5kIHRlc3RzLjxicj4KV2UgY3VycmVudGx5IGhhdmUgYSBQcmUtcmVxdWVzdCBzY3JpcHQgdGhhdCBkZWxldGVzIHRoZSB3aG9sZSBkYXRhYmFzZSBiZWZvcmUgZXZlcnkgdGVzdC48YnI+CldlIGFsc28gaGF2ZSBhIGZ1bmN0aW9uIHRoYXQgY2FuIGJlIHVzZWQgZm9yIGFsbCBERUxFVEUgcmVxdWVzdHMgdG8gdmFsaWRhdGUgdGhlIHJlc3BvbnNlLjxicj4KCiFbYmFja2VuZF9wcmVfcmVxdWVzdF9zY3JpcHRzLnBuZ10oRG9jdW1lbnRhdGlvbi9pbWFnZXMvQmFja2VuZC1QcmUtUmVxdWVzdC1TY3JpcHRzLnBuZyk8YnI+CgojIyMjIEluc2lkZSB0aGUgUHV6emxlIGVuZHBvaW50IGZvbGRlciB3ZSBoYXZlIHNoYXJlZCBmdW5jdGlvbnMgdG8gdmFsaWRhdGUgYSBwdXp6bGUgcmVzcG9uc2UgYW5kIHRvIGdlbmVyYXRlIHNoYXJlZCBwdXp6bGUgSlNPTiBmb3IgUHJlLVJlcXVlc3Qgc2NyaXB0cyBmb3Igb3RoZXIgdGVzdHMuPGJyPgoKIVtwdXp6bGVfcmVzcG9uc2VfY2hlY2tlci5wbmddKERvY3VtZW50YXRpb24vaW1hZ2VzL3B1enpsZV9yZXNwb25zZV9jaGVja2VyLnBuZyk8YnI+CiMjIyMgVGhlIGJlbG93IGZ1bmN0aW9ucyB0YWtlIGluIGFuIGludGVnZXIgYW5kIHJldHVybiBlaXRoZXIgdmFsaWQgSlNPTiBvciBhbiBvYmplY3QgZm9yIHJlZmVyZW5jZS48YnI+CiFbc2hhcmVkX3B1enpsZXNfZm9yX3Rlc3RzLnBuZ10oRG9jdW1lbnRhdGlvbi9pbWFnZXMvc2hhcmVkX3B1enpsZXNfZm9yX3Rlc3RzLnBuZyk8YnI+CgojIyMjIEluc2lkZSB0aGUgIkNvZGUgMjAxIiBmb2xkZXIgd2UgaGF2ZSBhIHRlc3QgY2FzZSB0aGF0IHdpbGwgYmUgcnVuIGZvciBhbGwgdGVzdHMgaW5zaWRlIG9mIHRoZSBmb2xkZXIuPGJyPgohW3NoYXJlZF9yZXNwb25zZV9jb2RlX3Rlc3QucG5nXShEb2N1bWVudGF0aW9uL2ltYWdlcy9zaGFyZWRfcmVzcG9uc2VfY29kZV90ZXN0LnBuZyk8YnI+Cg==
+ readmeEtag: '"fc56dbd9e10debb1f3a6ba9bfe9eacafca4cca16"'
+ readmeLastModified: Fri, 23 Aug 2024 00:41:57 GMT
repositoryId: 559546165
description: Backend API for Sudokuru
created: '2022-10-30T13:07:50Z'
- updated: '2024-05-12T16:02:03Z'
+ updated: '2024-08-23T00:42:40Z'
language: TypeScript
- archived: false
+ archived: true
stars: 1
watchers: 0
forks: 1
owner: Sudokuru
logo: https://avatars.githubusercontent.com/u/114212382?v=4
license: GPL-3.0
- repoEtag: '"479e05e5624e3d7753033d298d9fb3b488e58654c3c875b5905d9b8d19aa1f17"'
- repoLastModified: Sun, 12 May 2024 16:02:03 GMT
+ repoEtag: '"c0295c204c91bdf3cff9b3c5405e21d45313d5d0f9a4d9519b806eb8a1f82575"'
+ repoLastModified: Fri, 23 Aug 2024 00:42:40 GMT
category: Server Implementations
foundInMaster: true
oldLocations:
@@ -29270,7 +29270,7 @@
owner: API-Flows
logo: https://avatars.githubusercontent.com/u/153562650?v=4
license: Apache-2.0
- repoEtag: '"f1f3a527335a14fccd1981ef1d35ec3ab176fb6bf7ec2f112b99496f40cc4193"'
+ repoEtag: '"df077f6c08937b20a200914a427d0a341a38f58235e96646425828802cf749b2"'
repoLastModified: Sat, 06 Jul 2024 15:10:22 GMT
category: Server Implementations
foundInMaster: true
@@ -30847,17 +30847,17 @@
repositoryId: 584507821
description: Web API client generator
created: '2023-01-02T19:09:02Z'
- updated: '2024-08-18T11:11:58Z'
+ updated: '2024-08-22T18:52:17Z'
language: Python
archived: false
- stars: 0
+ stars: 1
watchers: 1
forks: 0
owner: python-lapidary
logo: https://avatars.githubusercontent.com/u/111730600?v=4
license: AGPL-3.0
- repoEtag: '"163e9235a5e1f23c1d9300f77682a35e88dab9d84df053ecc797999a4d53c246"'
- repoLastModified: Sun, 18 Aug 2024 11:11:58 GMT
+ repoEtag: '"56a96ed787ea0f9cc2ac3114d8dc33538b66d4f7fd7a72375f78c48a82e908c4"'
+ repoLastModified: Thu, 22 Aug 2024 18:52:17 GMT
category: Parsers
foundInMaster: true
- source: openapi3 tags
@@ -31863,17 +31863,17 @@
Simple, Fast, Code first and Compile time generated OpenAPI documentation
for Rust
created: '2021-09-30T22:00:31Z'
- updated: '2024-08-21T23:20:44Z'
+ updated: '2024-08-23T01:32:32Z'
language: Rust
archived: false
- stars: 2096
+ stars: 2099
watchers: 8
forks: 164
owner: juhaku
logo: https://avatars.githubusercontent.com/u/26358664?v=4
license: Apache-2.0
- repoEtag: '"069da5f106b58df8caecea458ba45801af6460cd7de66cb9317fbc5affb58115"'
- repoLastModified: Wed, 21 Aug 2024 23:20:44 GMT
+ repoEtag: '"054afd886e4e2e75e113b206c17f73d23d2e83a8269074cf9c33640191bf1cc8"'
+ repoLastModified: Fri, 23 Aug 2024 01:32:32 GMT
foundInMaster: true
category: Parsers
id: 14269a89115b3be71493769fca4d995e
@@ -31892,7 +31892,7 @@
Sample OpenAPI description to use for whatever you like, as a hopefully
more modern and useful alternative to the Petstore.
created: '2024-02-01T12:49:32Z'
- updated: '2024-08-15T14:18:10Z'
+ updated: '2024-08-22T13:43:47Z'
language: JavaScript
archived: false
stars: 42
@@ -31901,8 +31901,8 @@
owner: bump-sh-examples
logo: https://avatars.githubusercontent.com/u/157144805?v=4
license: NOASSERTION
- repoEtag: '"5e3f07b44f5c284b8b6d49e643275160fed8cf69b8ed669311f8a47959b18693"'
- repoLastModified: Thu, 15 Aug 2024 14:18:10 GMT
+ repoEtag: '"a13a531defe95b34a4076f56e25977dac62995edf92b2a9729f1139966dbad3b"'
+ repoLastModified: Thu, 22 Aug 2024 13:43:47 GMT
category: Server Implementations
foundInMaster: true
- source: openapi31 tags
@@ -31924,11 +31924,11 @@
archived: false
stars: 41
watchers: 3
- forks: 0
+ forks: 1
owner: a-chacon
logo: https://avatars.githubusercontent.com/u/39093711?v=4
license: GPL-3.0
- repoEtag: '"184a67e18770516e9fa80ef062b73d50b62e56e35fbb69431b7f96d7bcba50e3"'
+ repoEtag: '"84fc251cb8cc5f808387fc90dbde5e965358191882c8edb600e4b0cedf6a4a26"'
repoLastModified: Thu, 22 Aug 2024 01:20:00 GMT
category: Parsers
foundInMaster: true
@@ -32246,17 +32246,17 @@
(TypeScript) from any valid OpenAPI v3 or Swagger v2 specification, either
in yaml or json formats. 🍺
created: '2020-02-05T08:31:50Z'
- updated: '2024-08-21T19:30:53Z'
+ updated: '2024-08-22T19:30:27Z'
language: TypeScript
archived: false
- stars: 2754
+ stars: 2759
watchers: 11
- forks: 310
+ forks: 311
owner: orval-labs
logo: https://avatars.githubusercontent.com/u/176128704?v=4
license: MIT
- repoEtag: '"8ae5112857b38cc71159e82f0ec257fe6d6690fd7d10509e892615705b5ad4e8"'
- repoLastModified: Wed, 21 Aug 2024 19:30:53 GMT
+ repoEtag: '"6c68977fd6123980e24db679b03743dcb605e03ba2a06e29df2945c8f12b4459"'
+ repoLastModified: Thu, 22 Aug 2024 19:30:27 GMT
foundInMaster: true
oldLocations:
- https://github.com/anymaniax/orval
@@ -32366,7 +32366,7 @@
repositoryId: 559579865
description: null
created: '2022-10-30T14:59:36Z'
- updated: '2024-08-12T00:46:09Z'
+ updated: '2024-08-23T00:28:29Z'
language: TypeScript
archived: false
stars: 1
@@ -32375,8 +32375,8 @@
owner: Sudokuru
logo: https://avatars.githubusercontent.com/u/114212382?v=4
license: GPL-3.0
- repoEtag: '"5ef795db2a8bac19e79a119e483f6830ebb1183b1e25b9f29060990bedf063e5"'
- repoLastModified: Mon, 12 Aug 2024 00:46:09 GMT
+ repoEtag: '"fd4d5eb6cd03fc3a5395dfdde9afe934cd0eabada03ad661bd0e37d9911efcf3"'
+ repoLastModified: Fri, 23 Aug 2024 00:28:29 GMT
category: Server Implementations
foundInMaster: true
- source: openapi3 tags
@@ -32985,7 +32985,7 @@
applications. Currently targeting whitebox and blackbox testing of Web
APIs, like REST, GraphQL and RPC (e.g., gRPC and Thrift).
created: '2017-05-25T09:11:23Z'
- updated: '2024-08-20T18:22:19Z'
+ updated: '2024-08-22T19:31:38Z'
language: Kotlin
archived: false
stars: 469
@@ -32994,8 +32994,8 @@
owner: WebFuzzing
logo: https://avatars.githubusercontent.com/u/29148026?v=4
license: LGPL-3.0
- repoEtag: '"23170068255bfa9a3b8e6a701d71544ea761ca5ffbcb6401b616247fa7ff1ab1"'
- repoLastModified: Tue, 20 Aug 2024 18:22:19 GMT
+ repoEtag: '"e16f8d43b579c0eafec54fcebef2f8ba9dc45e98293d03562645c8e99061ae43"'
+ repoLastModified: Thu, 22 Aug 2024 19:31:38 GMT
foundInMaster: true
id: d1d3d85149c4a9437dbdbf157cf3d7c7
oldLocations:
@@ -34313,17 +34313,17 @@
repositoryId: 586543156
description: 'Kubb is deprecated. I recommend Orval as an alternative. '
created: '2023-01-08T14:15:23Z'
- updated: '2024-08-21T04:42:15Z'
+ updated: '2024-08-22T07:21:49Z'
language: TypeScript
archived: false
- stars: 617
+ stars: 616
watchers: 5
forks: 45
owner: kubb-labs
logo: https://avatars.githubusercontent.com/u/122118236?v=4
license: MIT
- repoEtag: '"00e7d88cf2e545c24f7447f67d805f5db795c8e30850543bb36bb26aec96a052"'
- repoLastModified: Wed, 21 Aug 2024 04:42:15 GMT
+ repoEtag: '"42854365b479772462441124b66bd8ca98663bdba441d8fdd586416f476e5c80"'
+ repoLastModified: Thu, 22 Aug 2024 07:21:49 GMT
foundInMaster: true
oldLocations:
- https://github.com/kubb-project/kubb
@@ -34421,17 +34421,17 @@
Full stack, modern web application template. Using FastAPI, React,
SQLModel, PostgreSQL, Docker, GitHub Actions, automatic HTTPS and more.
created: '2019-02-23T15:08:34Z'
- updated: '2024-08-22T01:38:45Z'
+ updated: '2024-08-23T03:21:51Z'
language: TypeScript
archived: false
- stars: 25528
+ stars: 25548
watchers: 271
- forks: 4382
+ forks: 4389
owner: fastapi
logo: https://avatars.githubusercontent.com/u/156354296?v=4
license: MIT
- repoEtag: '"dc20acaaf3f8b565ab723288bdddb88c170646f1b32d1b4a620d455248a61bdf"'
- repoLastModified: Thu, 22 Aug 2024 01:38:45 GMT
+ repoEtag: '"ee2da03af409ef0dfd4971d197d2ec64bcceb135f7edaca7921deaf2d76237fb"'
+ repoLastModified: Fri, 23 Aug 2024 03:21:51 GMT
foundInMaster: true
category: Server Implementations
id: 0354007b562b4efc3f08ce3da7f03afb
@@ -35038,7 +35038,7 @@
A spring boot starter template that includes a docker image, generate helm
chart using jkube, and GitHub action CI
created: '2023-10-22T19:25:57Z'
- updated: '2024-08-14T18:07:10Z'
+ updated: '2024-08-22T22:51:54Z'
language: Java
archived: false
stars: 0
@@ -35046,8 +35046,8 @@
forks: 0
owner: bryopsida
logo: https://avatars.githubusercontent.com/u/8363252?v=4
- repoEtag: '"40c4773781ba9e352300f216c0266b58061f1403ee0b4db97661ae742af0ac2b"'
- repoLastModified: Wed, 14 Aug 2024 18:07:10 GMT
+ repoEtag: '"0675531d56a6d236d0c97865f4f6cb821a4c25d55d598706ab32c20878165133"'
+ repoLastModified: Thu, 22 Aug 2024 22:51:54 GMT
category: Server Implementations
foundInMaster: true
- name: Ballerina OpenAPI tool
@@ -35097,16 +35097,16 @@
repositoryId: 507816571
description: Internal tools and workflow automations
created: '2022-06-27T08:01:30Z'
- updated: '2024-08-17T15:54:00Z'
+ updated: '2024-08-22T16:17:29Z'
language: Shell
archived: false
- stars: 129
+ stars: 130
watchers: 5
forks: 11
owner: uibakery
logo: https://avatars.githubusercontent.com/u/92528127?v=4
- repoEtag: '"8ea1e1337730431906f8237b21fedb9bdb227792df6748e7ed7a5531e298955a"'
- repoLastModified: Sat, 17 Aug 2024 15:54:00 GMT
+ repoEtag: '"4e9323bdf64a9acd09296bcaff36005ed8c82fa94c3f4395ef30e8a93c02cf39"'
+ repoLastModified: Thu, 22 Aug 2024 16:17:29 GMT
category: Server Implementations
- source: openapi3 tags
repository: https://github.com/intellifi-nl/brain-rest-api-spec
@@ -36217,7 +36217,7 @@
owner: experienced-dev
logo: https://avatars.githubusercontent.com/u/61656932?v=4
license: MIT
- repoEtag: '"a0149e0f6171c3fe372113c8cc7ab9061ccd242e11261d2121eb4c2dfc328702"'
+ repoEtag: '"f400d70a9d09bffdcdc8e9a4d112e81d62170b89cc72eebe661bd2031559599a"'
repoLastModified: Sat, 26 Aug 2023 14:47:42 GMT
category:
- Parsers
@@ -39391,17 +39391,17 @@
Examples and server integrations for generating the Swagger API
Specification, which enables easy access to your REST API
created: '2011-07-05T23:44:11Z'
- updated: '2024-08-21T12:41:56Z'
+ updated: '2024-08-22T20:58:00Z'
language: Java
archived: false
- stars: 7372
+ stars: 7371
watchers: 310
forks: 2170
owner: swagger-api
logo: https://avatars.githubusercontent.com/u/7658037?v=4
license: Apache-2.0
- repoEtag: '"b88dcc2f9d45e540eee1330290a66ac4a5750b63086bd323d4d1ecbb3e02d201"'
- repoLastModified: Wed, 21 Aug 2024 12:41:56 GMT
+ repoEtag: '"f63ee7e4d49143df82df25f110ff28b87499b02966f1d9506c2f2e683f30425d"'
+ repoLastModified: Thu, 22 Aug 2024 20:58:00 GMT
id: 266d60df2d48ad8a47539de3c1071f3a
- source: IMPLEMENTATIONS.md
name: Microsoft.OpenApi.net
@@ -39424,17 +39424,17 @@
in .NET along with common serializers to extract raw OpenAPI JSON and YAML
documents from the model.
created: '2017-07-14T00:24:14Z'
- updated: '2024-08-21T06:25:06Z'
+ updated: '2024-08-22T14:41:54Z'
language: C#
archived: false
- stars: 1371
+ stars: 1372
watchers: 64
forks: 231
owner: microsoft
logo: https://avatars.githubusercontent.com/u/6154722?v=4
license: MIT
- repoEtag: '"d9596ed687214c30c190802e95a999128d93eee2c5d3ef57f39db094ada4c1c6"'
- repoLastModified: Wed, 21 Aug 2024 06:25:06 GMT
+ repoEtag: '"c7c71c49ffd65b75654b214b57d1bbe73df29fb92b1072ceb68530633ab64c9f"'
+ repoLastModified: Thu, 22 Aug 2024 14:41:54 GMT
id: f3215034d64cfcbcc28a4bdb0205a075
- source: IMPLEMENTATIONS.md
name: openapi-validator
@@ -39733,17 +39733,17 @@
repositoryId: 30567860
description: Single file PHP script that adds a REST API to a SQL database
created: '2015-02-10T01:08:52Z'
- updated: '2024-08-20T09:57:48Z'
+ updated: '2024-08-22T15:32:24Z'
language: PHP
archived: false
- stars: 3574
+ stars: 3575
watchers: 171
forks: 1005
owner: mevdschee
logo: https://avatars.githubusercontent.com/u/1288217?v=4
license: MIT
- repoEtag: '"5895b7024482a6f8a07d7718a0aeb2d0f981fad9712859d04844e2bd5c8eba60"'
- repoLastModified: Tue, 20 Aug 2024 09:57:48 GMT
+ repoEtag: '"d2e156d3a8f62a1a4735dcadbd82a95c5124639f80edf06c9caf3ff8c3221ebc"'
+ repoLastModified: Thu, 22 Aug 2024 15:32:24 GMT
id: 84a7be428932f7789a8ad1a220b22216
- source: IMPLEMENTATIONS.md
name: Fastify OpenAPI v3
@@ -40700,7 +40700,7 @@
owner: microsoft
logo: https://avatars.githubusercontent.com/u/6154722?v=4
license: MIT
- repoEtag: '"d1a5e5208d4d0688cd0655c26307256138941f9eb3f0ae1bdf93c31629a0ae29"'
+ repoEtag: '"863bd5d91aaa6196b864af8c1d2b3a595cb3d40e7769cc6c58afb76b0322a46a"'
repoLastModified: Thu, 22 Aug 2024 03:02:47 GMT
foundInMaster: true
oldLocations:
@@ -41173,7 +41173,7 @@
repositoryId: 581433714
description: null
created: '2022-12-23T07:08:24Z'
- updated: '2024-07-31T05:40:31Z'
+ updated: '2024-08-22T09:08:56Z'
language: Go
archived: false
stars: 4
@@ -41182,8 +41182,8 @@
owner: neo-f
logo: https://avatars.githubusercontent.com/u/20187646?v=4
license: MIT
- repoEtag: '"b7d5647b20c68361f3c5d92bed6b929a99694f7bddba50b15a4bb7d1bb76a897"'
- repoLastModified: Wed, 31 Jul 2024 05:40:31 GMT
+ repoEtag: '"57bb986bab5a6bc34cceffd1d7870a2ecff9d88c34f43d46a18d3b8ad84e6e8b"'
+ repoLastModified: Thu, 22 Aug 2024 09:08:56 GMT
category: Parsers
foundInMaster: true
oldLocations:
@@ -41440,7 +41440,7 @@
Protobuf v3 (for grpc) based lightweight microservice framework. It
supports monolith service application as well.
created: '2021-02-24T07:21:40Z'
- updated: '2024-08-21T15:34:41Z'
+ updated: '2024-08-22T15:22:22Z'
language: Go
archived: false
stars: 1406
@@ -41449,8 +41449,8 @@
owner: unionj-cloud
logo: https://avatars.githubusercontent.com/u/79033021?v=4
license: MIT
- repoEtag: '"66b7a579228a6aae489f11ae6763b5cf306fa9419538c9a94c05517de8c791af"'
- repoLastModified: Wed, 21 Aug 2024 15:34:41 GMT
+ repoEtag: '"beef4535534d76989960eb995d80ad95055e981bc9a21d499d3f120f0c6a77c7"'
+ repoLastModified: Thu, 22 Aug 2024 15:22:22 GMT
foundInMaster: true
category: SDK
id: aab01f8bda6c542fdacf9ee8dfa7d20d