From 98508f7b9609de036b464e405dd70ca04da792b0 Mon Sep 17 00:00:00 2001 From: Tooling Builder Date: Sat, 13 Jul 2024 03:26:24 +0000 Subject: [PATCH] chore: Metadata build (updates to OpenAPI tooling metadata and site rebuild) --- docs/categories/all.html | 662 +++++------ docs/categories/auto-generators.html | 38 +- docs/categories/client-implementations.html | 10 +- docs/categories/code-generators.html | 68 +- docs/categories/converters.html | 36 +- docs/categories/data-validators.html | 44 +- docs/categories/description-validators.html | 34 +- docs/categories/documentation.html | 52 +- docs/categories/editors.html | 6 +- docs/categories/gateway.html | 6 +- docs/categories/gui-editors.html | 6 +- docs/categories/learning.html | 6 +- docs/categories/low-level-tooling.html | 10 +- docs/categories/mock-testing.html | 8 +- docs/categories/mock.html | 18 +- docs/categories/parsers.html | 210 ++-- docs/categories/sdk.html | 98 +- docs/categories/security.html | 8 +- docs/categories/server-implementations.html | 210 ++-- docs/categories/server.html | 68 +- docs/categories/testing-tools.html | 8 +- docs/categories/testing.html | 42 +- docs/categories/text-editors.html | 6 +- docs/categories/unclassified.html | 8 +- docs/categories/user-interfaces.html | 8 +- src/_data/tools.yaml | 1164 +++++++++---------- 26 files changed, 1417 insertions(+), 1417 deletions(-) diff --git a/docs/categories/all.html b/docs/categories/all.html index 1a274505..8db36b2c 100644 --- a/docs/categories/all.html +++ b/docs/categories/all.html @@ -253,7 +253,7 @@

No Yes Yes - 4449 + 4450 @@ -376,7 +376,7 @@

Yes Yes Yes - 5080 + 5102 @@ -883,7 +883,7 @@

No Yes Yes - 20659 + 20670 @@ -906,7 +906,7 @@

Yes Yes No - 132 + 133 @@ -1087,7 +1087,7 @@

Yes Yes Yes - 8775 + 8776 @@ -1409,7 +1409,7 @@

Yes Yes Yes - 1277 + 1279 @@ -1540,7 +1540,7 @@

No Yes Yes - 3324 + 3325 @@ -1655,7 +1655,7 @@

No Yes Yes - 8379 + 8380 @@ -1701,7 +1701,7 @@

No Yes No - 1811 + 1812 @@ -1787,7 +1787,7 @@

No Yes No - 1639 + 1641 @@ -1833,7 +1833,7 @@

No Yes Yes - 4162 + 4163 @@ -1965,7 +1965,7 @@

Yes Yes Yes - 2361 + 2362 @@ -2074,7 +2074,7 @@

No Yes Yes - 862 + 863 @@ -2162,7 +2162,7 @@

No Yes Yes - 1075 + 1076 @@ -2183,7 +2183,7 @@

No Yes Yes - 114 + 115 @@ -2334,7 +2334,7 @@

No Yes No - 464 + 465 @@ -2357,7 +2357,7 @@

No Yes No - 221 + 222 @@ -2573,7 +2573,7 @@

No No Yes - 9384 + 9385 @@ -2642,7 +2642,7 @@

No Yes Yes - 6616 + 6617 @@ -2688,7 +2688,7 @@

No Yes Yes - 16747 + 16751 @@ -2709,7 +2709,7 @@

No Yes Yes - 4546 + 4547 @@ -2778,7 +2778,7 @@

Yes Yes Yes - 541 + 542 @@ -3211,7 +3211,7 @@

No Yes No - 4931 + 4932 @@ -3234,7 +3234,7 @@

No Yes No - 455 + 457 @@ -3347,7 +3347,7 @@

Yes Yes No - 3852 + 3853 @@ -3370,7 +3370,7 @@

No Yes No - 3889 + 3890 @@ -3416,7 +3416,7 @@

Yes Yes No - 706 + 707 @@ -3458,7 +3458,7 @@

Yes Yes Yes - 885 + 886 @@ -3525,7 +3525,7 @@

No Yes Yes - 5916 + 5917 @@ -3569,7 +3569,7 @@

No Yes Yes - 12268 + 12273 @@ -3695,7 +3695,7 @@

Yes Yes No - 91 + 92 @@ -3810,7 +3810,7 @@

No Yes No - 27866 + 27869 @@ -3962,7 +3962,7 @@

Yes Yes No - 1177 + 1180 @@ -3985,7 +3985,7 @@

Yes Yes Yes - 1614 + 1616 @@ -4188,7 +4188,7 @@

No Yes Yes - 2581 + 2584 @@ -4324,7 +4324,7 @@

Yes Yes Yes - 497 + 501 @@ -4852,7 +4852,7 @@

Yes Yes Yes - 2459 + 2461 @@ -5076,7 +5076,7 @@

No Yes No - 637 + 639 @@ -5099,7 +5099,7 @@

Yes Yes No - 1651 + 1657 @@ -5237,7 +5237,7 @@

No Yes No - 73435 + 73465 @@ -5260,7 +5260,7 @@

Yes Yes No - 26021 + 26023 @@ -5325,7 +5325,7 @@

No Yes No - 6096 + 6099 @@ -5348,7 +5348,7 @@

No Yes No - 5618 + 5625 @@ -5371,7 +5371,7 @@

Yes Yes Yes - 5072 + 5083 @@ -5436,7 +5436,7 @@

No Yes No - 3178 + 3179 @@ -5457,7 +5457,7 @@

No Yes No - 2618 + 2622 @@ -5499,7 +5499,7 @@

No Yes No - 2214 + 2216 @@ -5522,7 +5522,7 @@

No Yes No - 2177 + 2179 @@ -5564,7 +5564,7 @@

No Yes No - 2033 + 2034 @@ -5585,7 +5585,7 @@

No Yes No - 2087 + 2090 @@ -5629,7 +5629,7 @@

No Yes No - 1389 + 1390 @@ -5650,7 +5650,7 @@

No Yes No - 1344 + 1345 @@ -5671,7 +5671,7 @@

No Yes No - 1195 + 1198 @@ -5692,7 +5692,7 @@

No Yes No - 1153 + 1155 @@ -5713,7 +5713,7 @@

No Yes No - 987 + 988 @@ -5755,7 +5755,7 @@

No Yes No - 801 + 803 @@ -5841,7 +5841,7 @@

No Yes No - 688 + 689 @@ -5883,7 +5883,7 @@

No Yes No - 692 + 696 @@ -5967,7 +5967,7 @@

Yes Yes No - 587 + 588 @@ -6009,7 +6009,7 @@

No Yes No - 487 + 486 @@ -6051,7 +6051,7 @@

No Yes No - 479 + 480 @@ -6536,7 +6536,7 @@

No Yes No - 263 + 264 @@ -6748,7 +6748,7 @@

No Yes No - 219 + 221 @@ -7065,7 +7065,7 @@

Yes Yes No - 177 + 178 @@ -7508,7 +7508,7 @@

No Yes No - 116 + 117 @@ -8243,7 +8243,7 @@

No Yes No - 62 + 63 @@ -12650,7 +12650,7 @@

No Yes No - 8 + 9 @@ -20273,7 +20273,7 @@

No Yes No - 1 + N/A @@ -26411,7 +26411,7 @@

No Yes No - 24584 + 24605 @@ -28547,7 +28547,7 @@

Yes Yes No - 597 + 598 @@ -30954,7 +30954,7 @@

No No No - 533 + 534 @@ -31407,7 +31407,7 @@

No Yes Yes - 498 + 499 @@ -32198,7 +32198,7 @@

No Yes No - 1399 + 1400 @@ -32782,7 +32782,7 @@

Connexion (link)

Stars - 4449 + 4450 Watchers @@ -32798,7 +32798,7 @@

Connexion (link)

Last Updated - 2024-07-10T15:07:50Z + 2024-07-12T04:24:41Z Archived @@ -33088,7 +33088,7 @@

Scalar (link)

Stars - 5080 + 5102 Watchers @@ -33096,7 +33096,7 @@

Scalar (link)

Forks - 144 + 145 Created @@ -33104,7 +33104,7 @@

Scalar (link)

Last Updated - 2024-07-12T03:27:50Z + 2024-07-13T03:19:34Z Archived @@ -33308,7 +33308,7 @@

ReDoc (link)

Last Updated - 2024-07-12T01:04:42Z + 2024-07-12T22:35:34Z Archived @@ -33500,11 +33500,11 @@

oasdiff (link)

Watchers - 10 + 12 Forks - 55 + 56 Created @@ -33512,7 +33512,7 @@

oasdiff (link)

Last Updated - 2024-07-11T13:42:43Z + 2024-07-12T22:20:30Z Archived @@ -34226,7 +34226,7 @@

OpenAPI Client Generators (link)

Last Updated - 2024-07-07T20:38:37Z + 2024-07-12T19:59:14Z Archived @@ -34261,7 +34261,7 @@

OpenAPI Generator (link)

Stars - 20659 + 20670 Watchers @@ -34269,7 +34269,7 @@

OpenAPI Generator (link)

Forks - 6297 + 6302 Created @@ -34277,7 +34277,7 @@

OpenAPI Generator (link)

Last Updated - 2024-07-12T00:43:58Z + 2024-07-13T03:18:57Z Archived @@ -34312,7 +34312,7 @@

OpenAPI JSON Schema Generator (link) Stars - 132 + 133 Watchers @@ -34328,7 +34328,7 @@

OpenAPI JSON Schema Generator (link) Last Updated - 2024-07-09T13:28:10Z + 2024-07-12T21:05:56Z Archived @@ -34367,7 +34367,7 @@

Kiota Api Client Generator (link)

Watchers - 41 + 42 Forks @@ -34379,7 +34379,7 @@

Kiota Api Client Generator (link)

Last Updated - 2024-07-11T11:44:07Z + 2024-07-12T13:56:20Z Archived @@ -34720,7 +34720,7 @@

Swagger Editor (link)

Stars - 8775 + 8776 Watchers @@ -34736,7 +34736,7 @@

Swagger Editor (link)

Last Updated - 2024-07-11T15:49:57Z + 2024-07-12T14:10:19Z Archived @@ -34928,7 +34928,7 @@

Hackolade (link)

Watchers - 6 + 7 Forks @@ -34940,7 +34940,7 @@

Hackolade (link)

Last Updated - 2024-07-03T11:38:07Z + 2024-07-12T12:43:59Z Archived @@ -34991,7 +34991,7 @@

Apicurio Studio (link)

Last Updated - 2024-07-11T12:59:33Z + 2024-07-12T16:12:56Z Archived @@ -35450,7 +35450,7 @@

Prism (link)

Last Updated - 2024-07-11T16:42:17Z + 2024-07-12T14:34:24Z Archived @@ -35485,11 +35485,11 @@

Microcks (link)

Stars - 1277 + 1279 Watchers - 23 + 24 Forks @@ -35501,7 +35501,7 @@

Microcks (link)

Last Updated - 2024-07-11T12:17:47Z + 2024-07-12T20:37:52Z Archived @@ -35791,11 +35791,11 @@

tsoa (link)

Stars - 3324 + 3325 Watchers - 28 + 29 Forks @@ -35807,7 +35807,7 @@

tsoa (link)

Last Updated - 2024-07-11T20:03:35Z + 2024-07-12T11:30:12Z Archived @@ -36046,7 +36046,7 @@

API Platform (link)

Stars - 8379 + 8380 Watchers @@ -36062,7 +36062,7 @@

API Platform (link)

Last Updated - 2024-07-11T03:18:30Z + 2024-07-12T09:03:19Z Archived @@ -36148,7 +36148,7 @@

Fusio (link)

Stars - 1811 + 1812 Watchers @@ -36164,7 +36164,7 @@

Fusio (link)

Last Updated - 2024-07-10T18:46:46Z + 2024-07-12T05:39:47Z Archived @@ -36352,7 +36352,7 @@

@nestjs/swagger (link)

Stars - 1639 + 1641 Watchers @@ -36368,7 +36368,7 @@

@nestjs/swagger (link)

Last Updated - 2024-07-11T00:16:27Z + 2024-07-13T02:27:35Z Archived @@ -36454,7 +36454,7 @@

Dredd (link)

Stars - 4162 + 4163 Watchers @@ -36470,7 +36470,7 @@

Dredd (link)

Last Updated - 2024-07-11T15:55:02Z + 2024-07-12T09:33:53Z Archived @@ -36513,7 +36513,7 @@

express-openapi-validator (link)

Forks - 204 + 203 Created @@ -36623,7 +36623,7 @@

portman (link)

Last Updated - 2024-07-09T20:15:35Z + 2024-07-12T19:15:58Z Archived @@ -36674,7 +36674,7 @@

Step CI (link)

Last Updated - 2024-07-08T23:58:18Z + 2024-07-13T00:26:14Z Archived @@ -36760,7 +36760,7 @@

Spectral (link)

Stars - 2361 + 2362 Watchers @@ -36776,7 +36776,7 @@

Spectral (link)

Last Updated - 2024-07-12T01:20:00Z + 2024-07-12T14:54:16Z Archived @@ -36917,7 +36917,7 @@

Redocly CLI (link)

Watchers - 26 + 27 Forks @@ -36929,7 +36929,7 @@

Redocly CLI (link)

Last Updated - 2024-07-11T11:13:53Z + 2024-07-12T13:55:27Z Archived @@ -37015,7 +37015,7 @@

committee (link)

Stars - 862 + 863 Watchers @@ -37031,7 +37031,7 @@

committee (link)

Last Updated - 2024-07-11T17:25:39Z + 2024-07-12T07:55:12Z Archived @@ -37219,7 +37219,7 @@

APIDevTools/swagger-parser (link)

Stars - 1075 + 1076 Watchers @@ -37227,7 +37227,7 @@

APIDevTools/swagger-parser (link)

Forks - 152 + 153 Created @@ -37235,7 +37235,7 @@

APIDevTools/swagger-parser (link)

Last Updated - 2024-06-27T12:12:58Z + 2024-07-12T15:57:14Z Archived @@ -37270,7 +37270,7 @@

openapi-snippet (link)

Stars - 114 + 115 Watchers @@ -37286,7 +37286,7 @@

openapi-snippet (link)

Last Updated - 2024-06-07T08:19:36Z + 2024-07-12T11:12:55Z Archived @@ -37627,7 +37627,7 @@

php-openapi (link)

Stars - 464 + 465 Watchers @@ -37643,7 +37643,7 @@

php-openapi (link)

Last Updated - 2024-06-27T20:17:40Z + 2024-07-12T07:37:21Z Archived @@ -37678,7 +37678,7 @@

Object Oriented OpenAPI Specification ( Stars - 221 + 222 Watchers @@ -37694,7 +37694,7 @@

Object Oriented OpenAPI Specification ( Last Updated - 2024-07-03T15:40:37Z + 2024-07-13T00:04:13Z Archived @@ -37784,7 +37784,7 @@

psx-api (link)

Watchers - 3 + 4 Forks @@ -37796,7 +37796,7 @@

psx-api (link)

Last Updated - 2024-07-10T20:11:30Z + 2024-07-13T00:18:30Z Archived @@ -37839,7 +37839,7 @@

Microsoft/OpenAPI.NET (link)

Forks - 226 + 227 Created @@ -37847,7 +37847,7 @@

Microsoft/OpenAPI.NET (link)

Last Updated - 2024-07-11T02:52:36Z + 2024-07-12T06:14:17Z Archived @@ -38188,7 +38188,7 @@

go-swagger (link)

Stars - 9384 + 9385 Watchers @@ -38204,7 +38204,7 @@

go-swagger (link)

Last Updated - 2024-07-12T00:02:20Z + 2024-07-12T04:51:36Z Archived @@ -38341,7 +38341,7 @@

NSwag (link)

Stars - 6616 + 6617 Watchers @@ -38349,7 +38349,7 @@

NSwag (link)

Forks - 1224 + 1225 Created @@ -38357,7 +38357,7 @@

NSwag (link)

Last Updated - 2024-07-10T13:32:15Z + 2024-07-12T17:50:30Z Archived @@ -38443,7 +38443,7 @@

Swagger-Codegen (link)

Stars - 16747 + 16751 Watchers @@ -38459,7 +38459,7 @@

Swagger-Codegen (link)

Last Updated - 2024-07-11T16:12:17Z + 2024-07-13T02:14:41Z Archived @@ -38494,7 +38494,7 @@

Azure AutoRest (link)

Stars - 4546 + 4547 Watchers @@ -38510,7 +38510,7 @@

Azure AutoRest (link)

Last Updated - 2024-07-11T05:38:36Z + 2024-07-12T20:39:50Z Archived @@ -38647,7 +38647,7 @@

api (link)

Stars - 541 + 542 Watchers @@ -38663,7 +38663,7 @@

api (link)

Last Updated - 2024-07-10T23:39:36Z + 2024-07-13T01:17:09Z Archived @@ -39667,7 +39667,7 @@

mitmproxy2swagger (link)

Stars - 4931 + 4932 Watchers @@ -39683,7 +39683,7 @@

mitmproxy2swagger (link)

Last Updated - 2024-07-12T01:38:49Z + 2024-07-12T21:31:47Z Archived @@ -39718,11 +39718,11 @@

OpenApiSpecGeneratorPlugin (link)

Stars - 455 + 457 Watchers - 15 + 16 Forks @@ -39734,7 +39734,7 @@

OpenApiSpecGeneratorPlugin (link)

Last Updated - 2024-07-11T09:03:06Z + 2024-07-12T23:04:22Z Archived @@ -39973,7 +39973,7 @@

OpenAPI DevTools (link)

Stars - 3852 + 3853 Watchers @@ -39989,7 +39989,7 @@

OpenAPI DevTools (link)

Last Updated - 2024-07-11T15:22:29Z + 2024-07-13T00:46:24Z Archived @@ -40024,7 +40024,7 @@

TypeSpec (link)

Stars - 3889 + 3890 Watchers @@ -40040,7 +40040,7 @@

TypeSpec (link)

Last Updated - 2024-07-12T02:52:29Z + 2024-07-12T21:38:39Z Archived @@ -40126,7 +40126,7 @@

Restish (link)

Stars - 706 + 707 Watchers @@ -40142,7 +40142,7 @@

Restish (link)

Last Updated - 2024-07-12T03:25:44Z + 2024-07-12T12:37:37Z Archived @@ -40228,7 +40228,7 @@

openapi-to-postman (link)

Stars - 885 + 886 Watchers @@ -40236,7 +40236,7 @@

openapi-to-postman (link)

Forks - 190 + 191 Created @@ -40244,7 +40244,7 @@

openapi-to-postman (link)

Last Updated - 2024-07-10T14:12:32Z + 2024-07-12T10:21:52Z Archived @@ -40381,7 +40381,7 @@

SpringFox (link)

Stars - 5916 + 5917 Watchers @@ -40397,7 +40397,7 @@

SpringFox (link)

Last Updated - 2024-07-10T00:42:51Z + 2024-07-12T14:49:25Z Archived @@ -40483,7 +40483,7 @@

OWASP ZAP (link)

Stars - 12268 + 12273 Watchers @@ -40499,7 +40499,7 @@

OWASP ZAP (link)

Last Updated - 2024-07-12T02:50:08Z + 2024-07-12T22:30:14Z Archived @@ -40789,7 +40789,7 @@

OpenAPI HttpFoundation Testing (link) Stars - 91 + 92 Watchers @@ -40805,7 +40805,7 @@

OpenAPI HttpFoundation Testing (link) Last Updated - 2024-07-12T01:51:19Z + 2024-07-12T22:14:57Z Archived @@ -41044,15 +41044,15 @@

Django REST Framework (link)

Stars - 27866 + 27869 Watchers - 621 + 622 Forks - 6768 + 6766 Created @@ -41060,7 +41060,7 @@

Django REST Framework (link)

Last Updated - 2024-07-11T15:59:32Z + 2024-07-12T21:58:50Z Archived @@ -41401,7 +41401,7 @@

openapi-python-client (link)

Stars - 1177 + 1180 Watchers @@ -41417,7 +41417,7 @@

openapi-python-client (link)

Last Updated - 2024-07-11T17:08:38Z + 2024-07-12T22:27:19Z Archived @@ -41452,7 +41452,7 @@

Elements (link)

Stars - 1614 + 1616 Watchers @@ -41468,7 +41468,7 @@

Elements (link)

Last Updated - 2024-07-10T22:48:48Z + 2024-07-12T17:39:01Z Archived @@ -41911,7 +41911,7 @@

orval (link)

Stars - 2581 + 2584 Watchers @@ -41919,7 +41919,7 @@

orval (link)

Forks - 289 + 290 Created @@ -41927,7 +41927,7 @@

orval (link)

Last Updated - 2024-07-12T00:51:44Z + 2024-07-13T01:19:26Z Archived @@ -42131,7 +42131,7 @@

Counterfact (link)

Last Updated - 2024-07-12T01:05:47Z + 2024-07-12T04:46:07Z Archived @@ -42217,7 +42217,7 @@

vacuum (link)

Stars - 497 + 501 Watchers @@ -42233,7 +42233,7 @@

vacuum (link)

Last Updated - 2024-07-11T19:58:21Z + 2024-07-13T02:40:05Z Archived @@ -42386,7 +42386,7 @@

libopenapi (link)

Last Updated - 2024-07-10T13:57:57Z + 2024-07-12T22:13:21Z Archived @@ -42692,7 +42692,7 @@

openapi-comparator (link)

Last Updated - 2024-07-11T15:21:04Z + 2024-07-12T14:08:26Z Archived @@ -43441,11 +43441,11 @@

🌿 Fern (link)

Stars - 2459 + 2461 Watchers - 17 + 19 Forks @@ -43457,7 +43457,7 @@

🌿 Fern (link)

Last Updated - 2024-07-11T21:47:18Z + 2024-07-12T23:54:52Z Archived @@ -43602,7 +43602,7 @@

Swift OpenAPI Generator (link)

Forks - 94 + 95 Created @@ -43610,7 +43610,7 @@

Swift OpenAPI Generator (link)

Last Updated - 2024-07-12T03:09:10Z + 2024-07-12T07:19:53Z Archived @@ -43951,7 +43951,7 @@

Fuego (link)

Stars - 637 + 639 Watchers @@ -43967,7 +43967,7 @@

Fuego (link)

Last Updated - 2024-07-11T08:55:41Z + 2024-07-12T16:46:34Z Archived @@ -44002,7 +44002,7 @@

Huma (link)

Stars - 1651 + 1657 Watchers @@ -44018,7 +44018,7 @@

Huma (link)

Last Updated - 2024-07-11T22:40:21Z + 2024-07-12T16:35:29Z Archived @@ -44308,15 +44308,15 @@

FastAPI (link)

Stars - 73435 + 73465 Watchers - 677 + 676 Forks - 6186 + 6189 Created @@ -44324,7 +44324,7 @@

FastAPI (link)

Last Updated - 2024-07-12T03:29:05Z + 2024-07-13T01:19:44Z Archived @@ -44359,7 +44359,7 @@

swagger-ui (link)

Stars - 26021 + 26023 Watchers @@ -44375,7 +44375,7 @@

swagger-ui (link)

Last Updated - 2024-07-12T03:19:48Z + 2024-07-13T01:30:22Z Archived @@ -44426,7 +44426,7 @@

Redoc (link)

Last Updated - 2024-07-12T01:04:42Z + 2024-07-12T22:35:34Z Archived @@ -44512,7 +44512,7 @@

mockoon (link)

Stars - 6096 + 6099 Watchers @@ -44520,7 +44520,7 @@

mockoon (link)

Forks - 350 + 353 Created @@ -44528,7 +44528,7 @@

mockoon (link)

Last Updated - 2024-07-11T17:20:36Z + 2024-07-13T00:37:24Z Archived @@ -44563,11 +44563,11 @@

OpenAPI Server Code Generator (oapi-cod Stars - 5618 + 5625 Watchers - 36 + 37 Forks @@ -44579,7 +44579,7 @@

OpenAPI Server Code Generator (oapi-cod Last Updated - 2024-07-12T03:11:30Z + 2024-07-12T21:50:05Z Archived @@ -44614,7 +44614,7 @@

OpenAPI TypeScript (link)

Stars - 5072 + 5083 Watchers @@ -44630,7 +44630,7 @@

OpenAPI TypeScript (link)

Last Updated - 2024-07-12T03:16:01Z + 2024-07-13T03:16:33Z Archived @@ -44767,7 +44767,7 @@

springdoc-openapi (link)

Stars - 3178 + 3179 Watchers @@ -44783,7 +44783,7 @@

springdoc-openapi (link)

Last Updated - 2024-07-11T07:07:56Z + 2024-07-12T21:22:41Z Archived @@ -44818,7 +44818,7 @@

uvicorn-gunicorn-fastapi-docker (link)< Stars - 2618 + 2622 Watchers @@ -44826,7 +44826,7 @@

uvicorn-gunicorn-fastapi-docker (link)< Forks - 329 + 330 Created @@ -44834,7 +44834,7 @@

uvicorn-gunicorn-fastapi-docker (link)< Last Updated - 2024-07-11T21:56:46Z + 2024-07-12T23:59:00Z Archived @@ -44920,7 +44920,7 @@

drf-spectacular (link)

Stars - 2214 + 2216 Watchers @@ -44936,7 +44936,7 @@

drf-spectacular (link)

Last Updated - 2024-07-07T21:44:36Z + 2024-07-12T16:04:05Z Archived @@ -44971,11 +44971,11 @@

Schemathesis (link)

Stars - 2177 + 2179 Watchers - 19 + 20 Forks @@ -44987,7 +44987,7 @@

Schemathesis (link)

Last Updated - 2024-07-12T01:31:08Z + 2024-07-12T22:57:00Z Archived @@ -45073,7 +45073,7 @@

utoipa (link)

Stars - 2033 + 2034 Watchers @@ -45081,7 +45081,7 @@

utoipa (link)

Forks - 160 + 162 Created @@ -45089,7 +45089,7 @@

utoipa (link)

Last Updated - 2024-07-11T17:59:00Z + 2024-07-12T20:17:19Z Archived @@ -45124,7 +45124,7 @@

msgspec (link)

Stars - 2087 + 2090 Watchers @@ -45132,7 +45132,7 @@

msgspec (link)

Forks - 60 + 61 Created @@ -45140,7 +45140,7 @@

msgspec (link)

Last Updated - 2024-07-11T21:11:38Z + 2024-07-12T15:24:54Z Archived @@ -45226,7 +45226,7 @@

OpenAPI-gui (link)

Stars - 1389 + 1390 Watchers @@ -45242,7 +45242,7 @@

OpenAPI-gui (link)

Last Updated - 2024-07-09T15:09:22Z + 2024-07-12T18:42:28Z Archived @@ -45277,7 +45277,7 @@

openapi-generator-cli (link)

Stars - 1344 + 1345 Watchers @@ -45293,7 +45293,7 @@

openapi-generator-cli (link)

Last Updated - 2024-07-11T11:01:11Z + 2024-07-12T10:49:17Z Archived @@ -45328,7 +45328,7 @@

ogen (link)

Stars - 1195 + 1198 Watchers @@ -45344,7 +45344,7 @@

ogen (link)

Last Updated - 2024-07-10T13:13:33Z + 2024-07-12T12:04:39Z Archived @@ -45379,7 +45379,7 @@

apispec (link)

Stars - 1153 + 1155 Watchers @@ -45395,7 +45395,7 @@

apispec (link)

Last Updated - 2024-07-10T14:55:52Z + 2024-07-12T14:20:33Z Archived @@ -45430,7 +45430,7 @@

apiflask (link)

Stars - 987 + 988 Watchers @@ -45446,7 +45446,7 @@

apiflask (link)

Last Updated - 2024-07-12T02:36:33Z + 2024-07-13T00:01:54Z Archived @@ -45489,7 +45489,7 @@

json-schema-validator (link)

Forks - 320 + 321 Created @@ -45532,7 +45532,7 @@

zod-to-openapi (link)

Stars - 801 + 803 Watchers @@ -45548,7 +45548,7 @@

zod-to-openapi (link)

Last Updated - 2024-07-11T19:03:10Z + 2024-07-13T02:24:52Z Archived @@ -45736,7 +45736,7 @@

API Sprout (link)

Stars - 688 + 689 Watchers @@ -45752,7 +45752,7 @@

API Sprout (link)

Last Updated - 2024-07-11T16:29:16Z + 2024-07-12T17:20:31Z Archived @@ -45838,7 +45838,7 @@

openapi-ts (link)

Stars - 692 + 696 Watchers @@ -45854,7 +45854,7 @@

openapi-ts (link)

Last Updated - 2024-07-11T23:04:56Z + 2024-07-13T01:19:55Z Archived @@ -46042,7 +46042,7 @@

openapi-tui (link)

Stars - 587 + 588 Watchers @@ -46058,7 +46058,7 @@

openapi-tui (link)

Last Updated - 2024-07-11T23:18:56Z + 2024-07-12T05:41:57Z Archived @@ -46144,7 +46144,7 @@

docusaurus-openapi (link)

Stars - 487 + 486 Watchers @@ -46160,7 +46160,7 @@

docusaurus-openapi (link)

Last Updated - 2024-07-11T05:02:03Z + 2024-07-12T08:13:18Z Archived @@ -46246,7 +46246,7 @@

oazapfts (link)

Stars - 479 + 480 Watchers @@ -46262,7 +46262,7 @@

oazapfts (link)

Last Updated - 2024-07-11T11:20:03Z + 2024-07-12T10:29:15Z Archived @@ -46352,7 +46352,7 @@

stackql (link)

Watchers - 10 + 12 Forks @@ -46364,7 +46364,7 @@

stackql (link)

Last Updated - 2024-07-09T13:48:55Z + 2024-07-12T08:51:41Z Archived @@ -46964,7 +46964,7 @@

rest (link)

Watchers - 4 + 5 Forks @@ -46976,7 +46976,7 @@

rest (link)

Last Updated - 2024-07-07T07:09:48Z + 2024-07-12T09:58:44Z Archived @@ -47376,7 +47376,7 @@

modelina (link)

Forks - 165 + 166 Created @@ -47419,7 +47419,7 @@

chanfana (link)

Stars - 263 + 264 Watchers @@ -47427,7 +47427,7 @@

chanfana (link)

Forks - 35 + 36 Created @@ -47435,7 +47435,7 @@

chanfana (link)

Last Updated - 2024-07-09T05:11:15Z + 2024-07-12T21:27:53Z Archived @@ -47929,7 +47929,7 @@

zod-openapi (link)

Stars - 219 + 221 Watchers @@ -47945,7 +47945,7 @@

zod-openapi (link)

Last Updated - 2024-07-09T13:12:31Z + 2024-07-12T17:11:07Z Archived @@ -48596,7 +48596,7 @@

cli (link)

Watchers - 7 + 8 Forks @@ -48608,7 +48608,7 @@

cli (link)

Last Updated - 2024-07-09T02:35:35Z + 2024-07-12T09:46:50Z Archived @@ -48694,7 +48694,7 @@

openapi-sampler (link)

Stars - 177 + 178 Watchers @@ -48710,7 +48710,7 @@

openapi-sampler (link)

Last Updated - 2024-07-11T21:37:55Z + 2024-07-12T12:59:40Z Archived @@ -48800,7 +48800,7 @@

bricks (link)

Watchers - 10 + 12 Forks @@ -48812,7 +48812,7 @@

bricks (link)

Last Updated - 2024-06-11T07:51:53Z + 2024-07-12T14:16:51Z Archived @@ -49059,7 +49059,7 @@

paypal-rest-api-specifications (link) Forks - 114 + 115 Created @@ -49067,7 +49067,7 @@

paypal-rest-api-specifications (link) Last Updated - 2024-07-09T18:56:41Z + 2024-07-12T13:21:32Z Archived @@ -49106,7 +49106,7 @@

refitter (link)

Watchers - 5 + 6 Forks @@ -49118,7 +49118,7 @@

refitter (link)

Last Updated - 2024-07-11T20:22:48Z + 2024-07-12T12:55:20Z Archived @@ -49220,7 +49220,7 @@

speakeasy (link)

Last Updated - 2024-07-12T00:37:13Z + 2024-07-12T18:58:54Z Archived @@ -49765,7 +49765,7 @@

apistos (link)

Stars - 116 + 117 Watchers @@ -49781,7 +49781,7 @@

apistos (link)

Last Updated - 2024-07-11T19:55:29Z + 2024-07-12T17:52:13Z Archived @@ -50381,7 +50381,7 @@

tools.openapis.org (link)

Watchers - 11 + 12 Forks @@ -50393,7 +50393,7 @@

tools.openapis.org (link)

Last Updated - 2024-07-11T03:33:34Z + 2024-07-12T03:32:07Z Archived @@ -51350,11 +51350,11 @@

apidom (link)

Watchers - 10 + 11 Forks - 14 + 15 Created @@ -51362,7 +51362,7 @@

apidom (link)

Last Updated - 2024-07-12T00:59:52Z + 2024-07-12T23:49:55Z Archived @@ -51550,7 +51550,7 @@

httpgenerator (link)

Stars - 62 + 63 Watchers @@ -51566,7 +51566,7 @@

httpgenerator (link)

Last Updated - 2024-07-11T07:48:28Z + 2024-07-12T10:40:39Z Archived @@ -52986,7 +52986,7 @@

echo-boilerplate (link)

Forks - 16 + 17 Created @@ -53963,7 +53963,7 @@

opg (link)

Last Updated - 2024-04-22T10:14:59Z + 2024-07-12T23:19:19Z Archived @@ -54104,7 +54104,7 @@

data-fair (link)

Watchers - 3 + 4 Forks @@ -54881,7 +54881,7 @@

hei-admin-api (link)

Last Updated - 2024-07-11T13:34:42Z + 2024-07-12T07:55:48Z Archived @@ -56156,7 +56156,7 @@

chia-api (link)

Last Updated - 2024-07-04T21:00:19Z + 2024-07-12T21:24:27Z Archived @@ -56909,7 +56909,7 @@

mockoon.com (link)

Watchers - 3 + 4 Forks @@ -56921,7 +56921,7 @@

mockoon.com (link)

Last Updated - 2024-07-11T14:59:32Z + 2024-07-12T13:16:44Z Archived @@ -58949,7 +58949,7 @@

aiopenapi3 (link)

Watchers - 2 + 3 Forks @@ -58961,7 +58961,7 @@

aiopenapi3 (link)

Last Updated - 2024-07-09T09:09:17Z + 2024-07-12T13:47:23Z Archived @@ -59471,7 +59471,7 @@

yapily-openapi (link)

Last Updated - 2024-07-09T13:29:00Z + 2024-07-12T15:31:21Z Archived @@ -60236,7 +60236,7 @@

fastify-flux (link)

Last Updated - 2024-04-22T20:05:39Z + 2024-07-13T01:09:27Z Archived @@ -62209,7 +62209,7 @@

mds-openapi (link)

Stars - 8 + 9 Watchers @@ -62225,7 +62225,7 @@

mds-openapi (link)

Last Updated - 2023-11-09T16:50:13Z + 2024-07-12T19:24:55Z Archived @@ -62582,7 +62582,7 @@

lapidary (link)

Last Updated - 2024-07-02T09:17:45Z + 2024-07-12T22:48:45Z Archived @@ -62625,7 +62625,7 @@

sandbox (link)

Forks - 2 + 3 Created @@ -62633,7 +62633,7 @@

sandbox (link)

Last Updated - 2024-07-09T15:45:29Z + 2024-07-12T15:56:34Z Archived @@ -62876,7 +62876,7 @@

commons-server (link)

Watchers - 3 + 4 Forks @@ -62888,7 +62888,7 @@

commons-server (link)

Last Updated - 2023-05-26T17:09:13Z + 2024-07-12T09:46:40Z Archived @@ -63704,7 +63704,7 @@

vscode-extension (link)

Last Updated - 2024-07-03T05:46:13Z + 2024-07-12T03:32:51Z Archived @@ -65744,7 +65744,7 @@

sonar-openapi (link)

Last Updated - 2024-06-28T10:59:39Z + 2024-07-12T12:08:21Z Archived @@ -67427,7 +67427,7 @@

angular-demo-application-source (link)< Last Updated - 2024-04-03T13:19:18Z + 2024-07-12T17:21:46Z Archived @@ -67470,7 +67470,7 @@

todo-api (link)

Forks - 12 + 13 Created @@ -70628,7 +70628,7 @@

commons (link)

Watchers - 3 + 4 Forks @@ -70640,7 +70640,7 @@

commons (link)

Last Updated - 2023-01-28T02:03:50Z + 2024-07-12T09:46:31Z Archived @@ -72668,7 +72668,7 @@

pulumi-provider-template (link)

Watchers - 2 + 3 Forks @@ -72680,7 +72680,7 @@

pulumi-provider-template (link)

Last Updated - 2024-07-11T01:28:27Z + 2024-07-12T20:34:10Z Archived @@ -73649,7 +73649,7 @@

oapi (link)

Last Updated - 2024-01-19T10:26:24Z + 2024-07-12T16:22:16Z Archived @@ -74669,7 +74669,7 @@

lite (link)

Last Updated - 2024-07-07T09:12:07Z + 2024-07-12T17:58:50Z Archived @@ -75689,7 +75689,7 @@

go-aas-proxy (link)

Last Updated - 2024-07-11T21:40:18Z + 2024-07-12T12:45:34Z Archived @@ -75881,7 +75881,7 @@

rest (link)

Watchers - 1 + 2 Forks @@ -75893,7 +75893,7 @@

rest (link)

Last Updated - 2023-04-25T11:01:23Z + 2024-07-12T06:33:28Z Archived @@ -77270,7 +77270,7 @@

deputy (link)

Last Updated - 2024-03-25T03:56:12Z + 2024-07-13T02:50:44Z Archived @@ -79208,7 +79208,7 @@

goapi (link)

Last Updated - 2024-07-11T09:17:20Z + 2024-07-12T10:00:59Z Archived @@ -80722,7 +80722,7 @@

cmgd_web (link)

Stars - 1 + N/A Watchers @@ -80738,7 +80738,7 @@

cmgd_web (link)

Last Updated - 2022-09-30T04:25:48Z + 2024-07-12T06:24:26Z Archived @@ -81134,7 +81134,7 @@

protien-data-visualizer (link)

Watchers - 2 + 3 Forks @@ -81146,7 +81146,7 @@

protien-data-visualizer (link)

Last Updated - 2024-07-10T18:50:20Z + 2024-07-12T23:25:20Z Archived @@ -86654,7 +86654,7 @@

bridgewayhub (link)

Last Updated - 2024-07-10T18:28:30Z + 2024-07-12T18:44:15Z Archived @@ -91142,7 +91142,7 @@

eventbridge (link)

Last Updated - 2024-07-03T11:38:17Z + 2024-07-12T12:40:59Z Archived @@ -91193,7 +91193,7 @@

cinemarustback (link)

Last Updated - 2024-07-10T17:57:32Z + 2024-07-12T16:56:57Z Archived @@ -91907,7 +91907,7 @@

etherscan-openapi (link)

Last Updated - 2024-07-03T13:09:51Z + 2024-07-12T18:12:22Z Archived @@ -91915,7 +91915,7 @@

etherscan-openapi (link)

Language - + TypeScript @@ -92774,7 +92774,7 @@

EvoMaster (link)

Last Updated - 2024-07-11T15:03:09Z + 2024-07-12T11:08:05Z Archived @@ -95614,7 +95614,7 @@

full-stack-fastapi-template (link)

Stars - 24584 + 24605 Watchers @@ -95622,7 +95622,7 @@

full-stack-fastapi-template (link)

Forks - 4159 + 4161 Created @@ -95630,7 +95630,7 @@

full-stack-fastapi-template (link)

Last Updated - 2024-07-12T02:55:18Z + 2024-07-12T20:57:13Z Archived @@ -100769,7 +100769,7 @@

OpenAPI Explorer (link)

Watchers - 6 + 7 Forks @@ -100781,7 +100781,7 @@

OpenAPI Explorer (link)

Last Updated - 2024-07-09T03:49:27Z + 2024-07-12T12:27:19Z Archived @@ -100816,7 +100816,7 @@

openapi-backend (link)

Stars - 597 + 598 Watchers @@ -100832,7 +100832,7 @@

openapi-backend (link)

Last Updated - 2024-07-09T01:45:31Z + 2024-07-12T05:03:49Z Archived @@ -105771,7 +105771,7 @@

Microsoft.OpenApi.net (link)

Forks - 226 + 227 Created @@ -105779,7 +105779,7 @@

Microsoft.OpenApi.net (link)

Last Updated - 2024-07-11T02:52:36Z + 2024-07-12T06:14:17Z Archived @@ -106681,7 +106681,7 @@

openapi-client-axios (link)

Stars - 533 + 534 Watchers @@ -106697,7 +106697,7 @@

openapi-client-axios (link)

Last Updated - 2024-07-04T07:28:31Z + 2024-07-12T05:02:58Z Archived @@ -107752,7 +107752,7 @@

APIClarity (link)

Stars - 498 + 499 Watchers @@ -107768,7 +107768,7 @@

APIClarity (link)

Last Updated - 2024-07-05T10:43:20Z + 2024-07-12T06:38:59Z Archived @@ -108176,7 +108176,7 @@

RESTler (link)

Last Updated - 2024-07-11T22:55:03Z + 2024-07-12T10:27:10Z Archived @@ -109639,7 +109639,7 @@

go-doudou (link)

Stars - 1399 + 1400 Watchers @@ -109655,7 +109655,7 @@

go-doudou (link)

Last Updated - 2024-07-09T21:25:20Z + 2024-07-12T14:10:49Z Archived diff --git a/docs/categories/auto-generators.html b/docs/categories/auto-generators.html index 14ae52fa..9e546c7f 100644 --- a/docs/categories/auto-generators.html +++ b/docs/categories/auto-generators.html @@ -91,7 +91,7 @@

No Yes No - 4931 + 4932 @@ -114,7 +114,7 @@

No Yes No - 455 + 457 @@ -227,7 +227,7 @@

Yes Yes No - 3852 + 3853 @@ -250,7 +250,7 @@

No Yes No - 3889 + 3890 @@ -273,7 +273,7 @@

No Yes No - 637 + 639 @@ -296,7 +296,7 @@

Yes Yes No - 1651 + 1657 @@ -350,7 +350,7 @@

mitmproxy2swagger (link)

Stars - 4931 + 4932 Watchers @@ -366,7 +366,7 @@

mitmproxy2swagger (link)

Last Updated - 2024-07-12T01:38:49Z + 2024-07-12T21:31:47Z Archived @@ -401,11 +401,11 @@

OpenApiSpecGeneratorPlugin (link)

Stars - 455 + 457 Watchers - 15 + 16 Forks @@ -417,7 +417,7 @@

OpenApiSpecGeneratorPlugin (link)

Last Updated - 2024-07-11T09:03:06Z + 2024-07-12T23:04:22Z Archived @@ -656,7 +656,7 @@

OpenAPI DevTools (link)

Stars - 3852 + 3853 Watchers @@ -672,7 +672,7 @@

OpenAPI DevTools (link)

Last Updated - 2024-07-11T15:22:29Z + 2024-07-13T00:46:24Z Archived @@ -707,7 +707,7 @@

TypeSpec (link)

Stars - 3889 + 3890 Watchers @@ -723,7 +723,7 @@

TypeSpec (link)

Last Updated - 2024-07-12T02:52:29Z + 2024-07-12T21:38:39Z Archived @@ -758,7 +758,7 @@

Fuego (link)

Stars - 637 + 639 Watchers @@ -774,7 +774,7 @@

Fuego (link)

Last Updated - 2024-07-11T08:55:41Z + 2024-07-12T16:46:34Z Archived @@ -809,7 +809,7 @@

Huma (link)

Stars - 1651 + 1657 Watchers @@ -825,7 +825,7 @@

Huma (link)

Last Updated - 2024-07-11T22:40:21Z + 2024-07-12T16:35:29Z Archived diff --git a/docs/categories/client-implementations.html b/docs/categories/client-implementations.html index b75112df..f9c8711d 100644 --- a/docs/categories/client-implementations.html +++ b/docs/categories/client-implementations.html @@ -137,7 +137,7 @@

No No No - 533 + 534 @@ -195,7 +195,7 @@

aiopenapi3 (link)

Watchers - 2 + 3 Forks @@ -207,7 +207,7 @@

aiopenapi3 (link)

Last Updated - 2024-07-09T09:09:17Z + 2024-07-12T13:47:23Z Archived @@ -293,7 +293,7 @@

openapi-client-axios (link)

Stars - 533 + 534 Watchers @@ -309,7 +309,7 @@

openapi-client-axios (link)

Last Updated - 2024-07-04T07:28:31Z + 2024-07-12T05:02:58Z Archived diff --git a/docs/categories/code-generators.html b/docs/categories/code-generators.html index df8902bc..7d1c7804 100644 --- a/docs/categories/code-generators.html +++ b/docs/categories/code-generators.html @@ -114,7 +114,7 @@

No Yes Yes - 20659 + 20670 @@ -137,7 +137,7 @@

Yes Yes No - 132 + 133 @@ -248,7 +248,7 @@

No Yes Yes - 16747 + 16751 @@ -317,7 +317,7 @@

No Yes Yes - 2581 + 2584 @@ -363,7 +363,7 @@

Yes Yes Yes - 2459 + 2461 @@ -409,7 +409,7 @@

Yes Yes No - 26021 + 26023 @@ -453,7 +453,7 @@

No Yes No - 5618 + 5625 @@ -495,7 +495,7 @@

No Yes No - 1344 + 1345 @@ -2133,7 +2133,7 @@

OpenAPI Client Generators (link)

Last Updated - 2024-07-07T20:38:37Z + 2024-07-12T19:59:14Z Archived @@ -2168,7 +2168,7 @@

OpenAPI Generator (link)

Stars - 20659 + 20670 Watchers @@ -2176,7 +2176,7 @@

OpenAPI Generator (link)

Forks - 6297 + 6302 Created @@ -2184,7 +2184,7 @@

OpenAPI Generator (link)

Last Updated - 2024-07-12T00:43:58Z + 2024-07-13T03:18:57Z Archived @@ -2219,7 +2219,7 @@

OpenAPI JSON Schema Generator (link) Stars - 132 + 133 Watchers @@ -2235,7 +2235,7 @@

OpenAPI JSON Schema Generator (link) Last Updated - 2024-07-09T13:28:10Z + 2024-07-12T21:05:56Z Archived @@ -2274,7 +2274,7 @@

Kiota Api Client Generator (link)

Watchers - 41 + 42 Forks @@ -2286,7 +2286,7 @@

Kiota Api Client Generator (link)

Last Updated - 2024-07-11T11:44:07Z + 2024-07-12T13:56:20Z Archived @@ -2474,7 +2474,7 @@

Swagger-Codegen (link)

Stars - 16747 + 16751 Watchers @@ -2490,7 +2490,7 @@

Swagger-Codegen (link)

Last Updated - 2024-07-11T16:12:17Z + 2024-07-13T02:14:41Z Archived @@ -2627,7 +2627,7 @@

orval (link)

Stars - 2581 + 2584 Watchers @@ -2635,7 +2635,7 @@

orval (link)

Forks - 289 + 290 Created @@ -2643,7 +2643,7 @@

orval (link)

Last Updated - 2024-07-12T00:51:44Z + 2024-07-13T01:19:26Z Archived @@ -2729,11 +2729,11 @@

🌿 Fern (link)

Stars - 2459 + 2461 Watchers - 17 + 19 Forks @@ -2745,7 +2745,7 @@

🌿 Fern (link)

Last Updated - 2024-07-11T21:47:18Z + 2024-07-12T23:54:52Z Archived @@ -2831,7 +2831,7 @@

swagger-ui (link)

Stars - 26021 + 26023 Watchers @@ -2847,7 +2847,7 @@

swagger-ui (link)

Last Updated - 2024-07-12T03:19:48Z + 2024-07-13T01:30:22Z Archived @@ -2933,11 +2933,11 @@

OpenAPI Server Code Generator (oapi-cod Stars - 5618 + 5625 Watchers - 36 + 37 Forks @@ -2949,7 +2949,7 @@

OpenAPI Server Code Generator (oapi-cod Last Updated - 2024-07-12T03:11:30Z + 2024-07-12T21:50:05Z Archived @@ -3035,7 +3035,7 @@

openapi-generator-cli (link)

Stars - 1344 + 1345 Watchers @@ -3051,7 +3051,7 @@

openapi-generator-cli (link)

Last Updated - 2024-07-11T11:01:11Z + 2024-07-12T10:49:17Z Archived @@ -3247,7 +3247,7 @@

paypal-rest-api-specifications (link) Forks - 114 + 115 Created @@ -3255,7 +3255,7 @@

paypal-rest-api-specifications (link) Last Updated - 2024-07-09T18:56:41Z + 2024-07-12T13:21:32Z Archived @@ -3612,7 +3612,7 @@

hei-admin-api (link)

Last Updated - 2024-07-11T13:34:42Z + 2024-07-12T07:55:48Z Archived diff --git a/docs/categories/converters.html b/docs/categories/converters.html index c9a97bfc..4fc68a3d 100644 --- a/docs/categories/converters.html +++ b/docs/categories/converters.html @@ -267,7 +267,7 @@

No No Yes - 9384 + 9385 @@ -336,7 +336,7 @@

Yes Yes Yes - 541 + 542 @@ -424,7 +424,7 @@

Yes Yes Yes - 885 + 886 @@ -470,7 +470,7 @@

Yes Yes No - 1177 + 1180 @@ -581,7 +581,7 @@

Yes Yes Yes - 5072 + 5083 @@ -1463,7 +1463,7 @@

portman (link)

Last Updated - 2024-07-09T20:15:35Z + 2024-07-12T19:15:58Z Archived @@ -1514,7 +1514,7 @@

Step CI (link)

Last Updated - 2024-07-08T23:58:18Z + 2024-07-13T00:26:14Z Archived @@ -1549,7 +1549,7 @@

go-swagger (link)

Stars - 9384 + 9385 Watchers @@ -1565,7 +1565,7 @@

go-swagger (link)

Last Updated - 2024-07-12T00:02:20Z + 2024-07-12T04:51:36Z Archived @@ -1702,7 +1702,7 @@

api (link)

Stars - 541 + 542 Watchers @@ -1718,7 +1718,7 @@

api (link)

Last Updated - 2024-07-10T23:39:36Z + 2024-07-13T01:17:09Z Archived @@ -1906,7 +1906,7 @@

openapi-to-postman (link)

Stars - 885 + 886 Watchers @@ -1914,7 +1914,7 @@

openapi-to-postman (link)

Forks - 190 + 191 Created @@ -1922,7 +1922,7 @@

openapi-to-postman (link)

Last Updated - 2024-07-10T14:12:32Z + 2024-07-12T10:21:52Z Archived @@ -2008,7 +2008,7 @@

openapi-python-client (link)

Stars - 1177 + 1180 Watchers @@ -2024,7 +2024,7 @@

openapi-python-client (link)

Last Updated - 2024-07-11T17:08:38Z + 2024-07-12T22:27:19Z Archived @@ -2263,7 +2263,7 @@

OpenAPI TypeScript (link)

Stars - 5072 + 5083 Watchers @@ -2279,7 +2279,7 @@

OpenAPI TypeScript (link)

Last Updated - 2024-07-12T03:16:01Z + 2024-07-13T03:16:33Z Archived diff --git a/docs/categories/data-validators.html b/docs/categories/data-validators.html index 240eb443..5f2aed1c 100644 --- a/docs/categories/data-validators.html +++ b/docs/categories/data-validators.html @@ -112,7 +112,7 @@

No Yes Yes - 3324 + 3325 @@ -221,7 +221,7 @@

No Yes Yes - 862 + 863 @@ -414,7 +414,7 @@

Yes Yes No - 91 + 92 @@ -506,7 +506,7 @@

Yes Yes Yes - 497 + 501 @@ -642,7 +642,7 @@

No Yes No - 637 + 639 @@ -665,7 +665,7 @@

Yes Yes No - 1651 + 1657 @@ -1998,11 +1998,11 @@

tsoa (link)

Stars - 3324 + 3325 Watchers - 28 + 29 Forks @@ -2014,7 +2014,7 @@

tsoa (link)

Last Updated - 2024-07-11T20:03:35Z + 2024-07-12T11:30:12Z Archived @@ -2057,7 +2057,7 @@

express-openapi-validator (link)

Forks - 204 + 203 Created @@ -2116,7 +2116,7 @@

Step CI (link)

Last Updated - 2024-07-08T23:58:18Z + 2024-07-13T00:26:14Z Archived @@ -2253,7 +2253,7 @@

committee (link)

Stars - 862 + 863 Watchers @@ -2269,7 +2269,7 @@

committee (link)

Last Updated - 2024-07-11T17:25:39Z + 2024-07-12T07:55:12Z Archived @@ -2712,7 +2712,7 @@

OpenAPI HttpFoundation Testing (link) Stars - 91 + 92 Watchers @@ -2728,7 +2728,7 @@

OpenAPI HttpFoundation Testing (link) Last Updated - 2024-07-12T01:51:19Z + 2024-07-12T22:14:57Z Archived @@ -2916,7 +2916,7 @@

vacuum (link)

Stars - 497 + 501 Watchers @@ -2932,7 +2932,7 @@

vacuum (link)

Last Updated - 2024-07-11T19:58:21Z + 2024-07-13T02:40:05Z Archived @@ -3222,7 +3222,7 @@

Fuego (link)

Stars - 637 + 639 Watchers @@ -3238,7 +3238,7 @@

Fuego (link)

Last Updated - 2024-07-11T08:55:41Z + 2024-07-12T16:46:34Z Archived @@ -3273,7 +3273,7 @@

Huma (link)

Stars - 1651 + 1657 Watchers @@ -3289,7 +3289,7 @@

Huma (link)

Last Updated - 2024-07-11T22:40:21Z + 2024-07-12T16:35:29Z Archived @@ -4207,7 +4207,7 @@

fastify-flux (link)

Last Updated - 2024-04-22T20:05:39Z + 2024-07-13T01:09:27Z Archived diff --git a/docs/categories/description-validators.html b/docs/categories/description-validators.html index 423955d3..ecb80680 100644 --- a/docs/categories/description-validators.html +++ b/docs/categories/description-validators.html @@ -216,7 +216,7 @@

Yes Yes Yes - 2361 + 2362 @@ -325,7 +325,7 @@

No Yes No - 464 + 465 @@ -371,7 +371,7 @@

Yes Yes Yes - 541 + 542 @@ -459,7 +459,7 @@

Yes Yes Yes - 497 + 501 @@ -1869,7 +1869,7 @@

express-openapi-validator (link)

Forks - 204 + 203 Created @@ -1963,7 +1963,7 @@

Spectral (link)

Stars - 2361 + 2362 Watchers @@ -1979,7 +1979,7 @@

Spectral (link)

Last Updated - 2024-07-12T01:20:00Z + 2024-07-12T14:54:16Z Archived @@ -2120,7 +2120,7 @@

Redocly CLI (link)

Watchers - 26 + 27 Forks @@ -2132,7 +2132,7 @@

Redocly CLI (link)

Last Updated - 2024-07-11T11:13:53Z + 2024-07-12T13:55:27Z Archived @@ -2218,7 +2218,7 @@

php-openapi (link)

Stars - 464 + 465 Watchers @@ -2234,7 +2234,7 @@

php-openapi (link)

Last Updated - 2024-06-27T20:17:40Z + 2024-07-12T07:37:21Z Archived @@ -2320,7 +2320,7 @@

api (link)

Stars - 541 + 542 Watchers @@ -2336,7 +2336,7 @@

api (link)

Last Updated - 2024-07-10T23:39:36Z + 2024-07-13T01:17:09Z Archived @@ -2524,7 +2524,7 @@

vacuum (link)

Stars - 497 + 501 Watchers @@ -2540,7 +2540,7 @@

vacuum (link)

Last Updated - 2024-07-11T19:58:21Z + 2024-07-13T02:40:05Z Archived @@ -3089,7 +3089,7 @@

cli (link)

Watchers - 7 + 8 Forks @@ -3101,7 +3101,7 @@

cli (link)

Last Updated - 2024-07-09T02:35:35Z + 2024-07-12T09:46:50Z Archived diff --git a/docs/categories/documentation.html b/docs/categories/documentation.html index d17a94a9..0c8b1923 100644 --- a/docs/categories/documentation.html +++ b/docs/categories/documentation.html @@ -188,7 +188,7 @@

Yes Yes Yes - 5080 + 5102 @@ -630,7 +630,7 @@

Yes Yes No - 3852 + 3853 @@ -653,7 +653,7 @@

Yes Yes No - 706 + 707 @@ -718,7 +718,7 @@

Yes Yes Yes - 1614 + 1616 @@ -955,7 +955,7 @@

Yes Yes Yes - 2459 + 2461 @@ -1150,7 +1150,7 @@

Yes Yes No - 177 + 178 @@ -2607,7 +2607,7 @@

Scalar (link)

Stars - 5080 + 5102 Watchers @@ -2615,7 +2615,7 @@

Scalar (link)

Forks - 144 + 145 Created @@ -2623,7 +2623,7 @@

Scalar (link)

Last Updated - 2024-07-12T03:27:50Z + 2024-07-13T03:19:34Z Archived @@ -2776,7 +2776,7 @@

ReDoc (link)

Last Updated - 2024-07-12T01:04:42Z + 2024-07-12T22:35:34Z Archived @@ -3427,7 +3427,7 @@

Redocly CLI (link)

Watchers - 26 + 27 Forks @@ -3439,7 +3439,7 @@

Redocly CLI (link)

Last Updated - 2024-07-11T11:13:53Z + 2024-07-12T13:55:27Z Archived @@ -3627,7 +3627,7 @@

OpenAPI DevTools (link)

Stars - 3852 + 3853 Watchers @@ -3643,7 +3643,7 @@

OpenAPI DevTools (link)

Last Updated - 2024-07-11T15:22:29Z + 2024-07-13T00:46:24Z Archived @@ -3678,7 +3678,7 @@

Restish (link)

Stars - 706 + 707 Watchers @@ -3694,7 +3694,7 @@

Restish (link)

Last Updated - 2024-07-12T03:25:44Z + 2024-07-12T12:37:37Z Archived @@ -3831,7 +3831,7 @@

Elements (link)

Stars - 1614 + 1616 Watchers @@ -3847,7 +3847,7 @@

Elements (link)

Last Updated - 2024-07-10T22:48:48Z + 2024-07-12T17:39:01Z Archived @@ -4392,11 +4392,11 @@

🌿 Fern (link)

Stars - 2459 + 2461 Watchers - 17 + 19 Forks @@ -4408,7 +4408,7 @@

🌿 Fern (link)

Last Updated - 2024-07-11T21:47:18Z + 2024-07-12T23:54:52Z Archived @@ -4851,7 +4851,7 @@

openapi-sampler (link)

Stars - 177 + 178 Watchers @@ -4867,7 +4867,7 @@

openapi-sampler (link)

Last Updated - 2024-07-11T21:37:55Z + 2024-07-12T12:59:40Z Archived @@ -5110,7 +5110,7 @@

data-fair (link)

Watchers - 3 + 4 Forks @@ -7252,7 +7252,7 @@

OpenAPI Explorer (link)

Watchers - 6 + 7 Forks @@ -7264,7 +7264,7 @@

OpenAPI Explorer (link)

Last Updated - 2024-07-09T03:49:27Z + 2024-07-12T12:27:19Z Archived diff --git a/docs/categories/editors.html b/docs/categories/editors.html index d67c4abb..5003b53a 100644 --- a/docs/categories/editors.html +++ b/docs/categories/editors.html @@ -91,7 +91,7 @@

No Yes No - 1389 + 1390 @@ -261,7 +261,7 @@

OpenAPI-gui (link)

Stars - 1389 + 1390 Watchers @@ -277,7 +277,7 @@

OpenAPI-gui (link)

Last Updated - 2024-07-09T15:09:22Z + 2024-07-12T18:42:28Z Archived diff --git a/docs/categories/gateway.html b/docs/categories/gateway.html index c7386b60..27a90a9f 100644 --- a/docs/categories/gateway.html +++ b/docs/categories/gateway.html @@ -110,7 +110,7 @@

No Yes No - 1811 + 1812 @@ -345,7 +345,7 @@

Fusio (link)

Stars - 1811 + 1812 Watchers @@ -361,7 +361,7 @@

Fusio (link)

Last Updated - 2024-07-10T18:46:46Z + 2024-07-12T05:39:47Z Archived diff --git a/docs/categories/gui-editors.html b/docs/categories/gui-editors.html index 00f2d558..5d2a64ec 100644 --- a/docs/categories/gui-editors.html +++ b/docs/categories/gui-editors.html @@ -554,7 +554,7 @@

Hackolade (link)

Watchers - 6 + 7 Forks @@ -566,7 +566,7 @@

Hackolade (link)

Last Updated - 2024-07-03T11:38:07Z + 2024-07-12T12:43:59Z Archived @@ -617,7 +617,7 @@

Apicurio Studio (link)

Last Updated - 2024-07-11T12:59:33Z + 2024-07-12T16:12:56Z Archived diff --git a/docs/categories/learning.html b/docs/categories/learning.html index 9d287caa..da141681 100644 --- a/docs/categories/learning.html +++ b/docs/categories/learning.html @@ -269,7 +269,7 @@

No Yes Yes - 498 + 499 @@ -754,7 +754,7 @@

APIClarity (link)

Stars - 498 + 499 Watchers @@ -770,7 +770,7 @@

APIClarity (link)

Last Updated - 2024-07-05T10:43:20Z + 2024-07-12T06:38:59Z Archived diff --git a/docs/categories/low-level-tooling.html b/docs/categories/low-level-tooling.html index 6153cb16..d872fc15 100644 --- a/docs/categories/low-level-tooling.html +++ b/docs/categories/low-level-tooling.html @@ -91,7 +91,7 @@

No Yes No - 3178 + 3179 @@ -1461,7 +1461,7 @@

springdoc-openapi (link)

Stars - 3178 + 3179 Watchers @@ -1477,7 +1477,7 @@

springdoc-openapi (link)

Last Updated - 2024-07-11T07:07:56Z + 2024-07-12T21:22:41Z Archived @@ -4427,7 +4427,7 @@

Microsoft.OpenApi.net (link)

Forks - 226 + 227 Created @@ -4435,7 +4435,7 @@

Microsoft.OpenApi.net (link)

Last Updated - 2024-07-11T02:52:36Z + 2024-07-12T06:14:17Z Archived diff --git a/docs/categories/mock-testing.html b/docs/categories/mock-testing.html index 80748bd7..36f27eb1 100644 --- a/docs/categories/mock-testing.html +++ b/docs/categories/mock-testing.html @@ -91,7 +91,7 @@

Yes Yes Yes - 1277 + 1279 @@ -145,11 +145,11 @@

Microcks (link)

Stars - 1277 + 1279 Watchers - 23 + 24 Forks @@ -161,7 +161,7 @@

Microcks (link)

Last Updated - 2024-07-11T12:17:47Z + 2024-07-12T20:37:52Z Archived diff --git a/docs/categories/mock.html b/docs/categories/mock.html index 5c533dd2..6ad96009 100644 --- a/docs/categories/mock.html +++ b/docs/categories/mock.html @@ -304,7 +304,7 @@

No Yes Yes - 2581 + 2584 @@ -417,7 +417,7 @@

No Yes No - 688 + 689 @@ -837,7 +837,7 @@

Prism (link)

Last Updated - 2024-07-11T16:42:17Z + 2024-07-12T14:34:24Z Archived @@ -1280,7 +1280,7 @@

orval (link)

Stars - 2581 + 2584 Watchers @@ -1288,7 +1288,7 @@

orval (link)

Forks - 289 + 290 Created @@ -1296,7 +1296,7 @@

orval (link)

Last Updated - 2024-07-12T00:51:44Z + 2024-07-13T01:19:26Z Archived @@ -1347,7 +1347,7 @@

Counterfact (link)

Last Updated - 2024-07-12T01:05:47Z + 2024-07-12T04:46:07Z Archived @@ -1535,7 +1535,7 @@

API Sprout (link)

Stars - 688 + 689 Watchers @@ -1551,7 +1551,7 @@

API Sprout (link)

Last Updated - 2024-07-11T16:29:16Z + 2024-07-12T17:20:31Z Archived diff --git a/docs/categories/parsers.html b/docs/categories/parsers.html index 51b73731..032547da 100644 --- a/docs/categories/parsers.html +++ b/docs/categories/parsers.html @@ -246,7 +246,7 @@

Yes Yes No - 132 + 133 @@ -474,7 +474,7 @@

No Yes Yes - 3324 + 3325 @@ -608,7 +608,7 @@

No Yes Yes - 1075 + 1076 @@ -629,7 +629,7 @@

No Yes Yes - 114 + 115 @@ -740,7 +740,7 @@

No Yes No - 464 + 465 @@ -763,7 +763,7 @@

No Yes No - 221 + 222 @@ -918,7 +918,7 @@

No No Yes - 9384 + 9385 @@ -1010,7 +1010,7 @@

Yes Yes Yes - 541 + 542 @@ -1259,7 +1259,7 @@

Yes Yes Yes - 885 + 886 @@ -1414,7 +1414,7 @@

Yes Yes No - 1177 + 1180 @@ -1866,7 +1866,7 @@

No Yes No - 2033 + 2034 @@ -1887,7 +1887,7 @@

No Yes No - 1344 + 1345 @@ -1908,7 +1908,7 @@

No Yes No - 1195 + 1198 @@ -1929,7 +1929,7 @@

No Yes No - 1153 + 1155 @@ -1971,7 +1971,7 @@

No Yes No - 801 + 803 @@ -2076,7 +2076,7 @@

Yes Yes No - 587 + 588 @@ -2118,7 +2118,7 @@

No Yes No - 479 + 480 @@ -2309,7 +2309,7 @@

No Yes No - 219 + 221 @@ -2500,7 +2500,7 @@

Yes Yes No - 177 + 178 @@ -2733,7 +2733,7 @@

No Yes No - 116 + 117 @@ -3132,7 +3132,7 @@

No Yes No - 62 + 63 @@ -4971,7 +4971,7 @@

No Yes No - 8 + 9 @@ -10422,7 +10422,7 @@

No No No - 533 + 534 @@ -10834,7 +10834,7 @@

ReDoc (link)

Last Updated - 2024-07-12T01:04:42Z + 2024-07-12T22:35:34Z Archived @@ -10873,11 +10873,11 @@

oasdiff (link)

Watchers - 10 + 12 Forks - 55 + 56 Created @@ -10885,7 +10885,7 @@

oasdiff (link)

Last Updated - 2024-07-11T13:42:43Z + 2024-07-12T22:20:30Z Archived @@ -11175,7 +11175,7 @@

OpenAPI JSON Schema Generator (link) Stars - 132 + 133 Watchers @@ -11191,7 +11191,7 @@

OpenAPI JSON Schema Generator (link) Last Updated - 2024-07-09T13:28:10Z + 2024-07-12T21:05:56Z Archived @@ -11332,7 +11332,7 @@

Hackolade (link)

Watchers - 6 + 7 Forks @@ -11344,7 +11344,7 @@

Hackolade (link)

Last Updated - 2024-07-03T11:38:07Z + 2024-07-12T12:43:59Z Archived @@ -11685,11 +11685,11 @@

tsoa (link)

Stars - 3324 + 3325 Watchers - 28 + 29 Forks @@ -11701,7 +11701,7 @@

tsoa (link)

Last Updated - 2024-07-11T20:03:35Z + 2024-07-12T11:30:12Z Archived @@ -11991,7 +11991,7 @@

APIDevTools/swagger-parser (link)

Stars - 1075 + 1076 Watchers @@ -11999,7 +11999,7 @@

APIDevTools/swagger-parser (link)

Forks - 152 + 153 Created @@ -12007,7 +12007,7 @@

APIDevTools/swagger-parser (link)

Last Updated - 2024-06-27T12:12:58Z + 2024-07-12T15:57:14Z Archived @@ -12042,7 +12042,7 @@

openapi-snippet (link)

Stars - 114 + 115 Watchers @@ -12058,7 +12058,7 @@

openapi-snippet (link)

Last Updated - 2024-06-07T08:19:36Z + 2024-07-12T11:12:55Z Archived @@ -12297,7 +12297,7 @@

php-openapi (link)

Stars - 464 + 465 Watchers @@ -12313,7 +12313,7 @@

php-openapi (link)

Last Updated - 2024-06-27T20:17:40Z + 2024-07-12T07:37:21Z Archived @@ -12348,7 +12348,7 @@

Object Oriented OpenAPI Specification ( Stars - 221 + 222 Watchers @@ -12364,7 +12364,7 @@

Object Oriented OpenAPI Specification ( Last Updated - 2024-07-03T15:40:37Z + 2024-07-13T00:04:13Z Archived @@ -12454,7 +12454,7 @@

psx-api (link)

Watchers - 3 + 4 Forks @@ -12466,7 +12466,7 @@

psx-api (link)

Last Updated - 2024-07-10T20:11:30Z + 2024-07-13T00:18:30Z Archived @@ -12509,7 +12509,7 @@

Microsoft/OpenAPI.NET (link)

Forks - 226 + 227 Created @@ -12517,7 +12517,7 @@

Microsoft/OpenAPI.NET (link)

Last Updated - 2024-07-11T02:52:36Z + 2024-07-12T06:14:17Z Archived @@ -12705,7 +12705,7 @@

go-swagger (link)

Stars - 9384 + 9385 Watchers @@ -12721,7 +12721,7 @@

go-swagger (link)

Last Updated - 2024-07-12T00:02:20Z + 2024-07-12T04:51:36Z Archived @@ -12909,7 +12909,7 @@

api (link)

Stars - 541 + 542 Watchers @@ -12925,7 +12925,7 @@

api (link)

Last Updated - 2024-07-10T23:39:36Z + 2024-07-13T01:17:09Z Archived @@ -13470,7 +13470,7 @@

openapi-to-postman (link)

Stars - 885 + 886 Watchers @@ -13478,7 +13478,7 @@

openapi-to-postman (link)

Forks - 190 + 191 Created @@ -13486,7 +13486,7 @@

openapi-to-postman (link)

Last Updated - 2024-07-10T14:12:32Z + 2024-07-12T10:21:52Z Archived @@ -13827,7 +13827,7 @@

openapi-python-client (link)

Stars - 1177 + 1180 Watchers @@ -13843,7 +13843,7 @@

openapi-python-client (link)

Last Updated - 2024-07-11T17:08:38Z + 2024-07-12T22:27:19Z Archived @@ -14149,7 +14149,7 @@

libopenapi (link)

Last Updated - 2024-07-10T13:57:57Z + 2024-07-12T22:13:21Z Archived @@ -14302,7 +14302,7 @@

openapi-comparator (link)

Last Updated - 2024-07-11T15:21:04Z + 2024-07-12T14:08:26Z Archived @@ -14812,7 +14812,7 @@

Redoc (link)

Last Updated - 2024-07-12T01:04:42Z + 2024-07-12T22:35:34Z Archived @@ -14847,7 +14847,7 @@

utoipa (link)

Stars - 2033 + 2034 Watchers @@ -14855,7 +14855,7 @@

utoipa (link)

Forks - 160 + 162 Created @@ -14863,7 +14863,7 @@

utoipa (link)

Last Updated - 2024-07-11T17:59:00Z + 2024-07-12T20:17:19Z Archived @@ -14898,7 +14898,7 @@

openapi-generator-cli (link)

Stars - 1344 + 1345 Watchers @@ -14914,7 +14914,7 @@

openapi-generator-cli (link)

Last Updated - 2024-07-11T11:01:11Z + 2024-07-12T10:49:17Z Archived @@ -14949,7 +14949,7 @@

ogen (link)

Stars - 1195 + 1198 Watchers @@ -14965,7 +14965,7 @@

ogen (link)

Last Updated - 2024-07-10T13:13:33Z + 2024-07-12T12:04:39Z Archived @@ -15000,7 +15000,7 @@

apispec (link)

Stars - 1153 + 1155 Watchers @@ -15016,7 +15016,7 @@

apispec (link)

Last Updated - 2024-07-10T14:55:52Z + 2024-07-12T14:20:33Z Archived @@ -15059,7 +15059,7 @@

json-schema-validator (link)

Forks - 320 + 321 Created @@ -15102,7 +15102,7 @@

zod-to-openapi (link)

Stars - 801 + 803 Watchers @@ -15118,7 +15118,7 @@

zod-to-openapi (link)

Last Updated - 2024-07-11T19:03:10Z + 2024-07-13T02:24:52Z Archived @@ -15357,7 +15357,7 @@

openapi-tui (link)

Stars - 587 + 588 Watchers @@ -15373,7 +15373,7 @@

openapi-tui (link)

Last Updated - 2024-07-11T23:18:56Z + 2024-07-12T05:41:57Z Archived @@ -15459,7 +15459,7 @@

oazapfts (link)

Stars - 479 + 480 Watchers @@ -15475,7 +15475,7 @@

oazapfts (link)

Last Updated - 2024-07-11T11:20:03Z + 2024-07-12T10:29:15Z Archived @@ -15918,7 +15918,7 @@

zod-openapi (link)

Stars - 219 + 221 Watchers @@ -15934,7 +15934,7 @@

zod-openapi (link)

Last Updated - 2024-07-09T13:12:31Z + 2024-07-12T17:11:07Z Archived @@ -16377,7 +16377,7 @@

openapi-sampler (link)

Stars - 177 + 178 Watchers @@ -16393,7 +16393,7 @@

openapi-sampler (link)

Last Updated - 2024-07-11T21:37:55Z + 2024-07-12T12:59:40Z Archived @@ -16483,7 +16483,7 @@

refitter (link)

Watchers - 5 + 6 Forks @@ -16495,7 +16495,7 @@

refitter (link)

Last Updated - 2024-07-11T20:22:48Z + 2024-07-12T12:55:20Z Archived @@ -16546,7 +16546,7 @@

speakeasy (link)

Last Updated - 2024-07-12T00:37:13Z + 2024-07-12T18:58:54Z Archived @@ -16938,7 +16938,7 @@

apistos (link)

Stars - 116 + 117 Watchers @@ -16954,7 +16954,7 @@

apistos (link)

Last Updated - 2024-07-11T19:55:29Z + 2024-07-12T17:52:13Z Archived @@ -17758,11 +17758,11 @@

apidom (link)

Watchers - 10 + 11 Forks - 14 + 15 Created @@ -17770,7 +17770,7 @@

apidom (link)

Last Updated - 2024-07-12T00:59:52Z + 2024-07-12T23:49:55Z Archived @@ -17907,7 +17907,7 @@

httpgenerator (link)

Stars - 62 + 63 Watchers @@ -17923,7 +17923,7 @@

httpgenerator (link)

Last Updated - 2024-07-11T07:48:28Z + 2024-07-12T10:40:39Z Archived @@ -18994,7 +18994,7 @@

opg (link)

Last Updated - 2024-04-22T10:14:59Z + 2024-07-12T23:19:19Z Archived @@ -21340,7 +21340,7 @@

yapily-openapi (link)

Last Updated - 2024-07-09T13:29:00Z + 2024-07-12T15:31:21Z Archived @@ -21646,7 +21646,7 @@

fastify-flux (link)

Last Updated - 2024-04-22T20:05:39Z + 2024-07-13T01:09:27Z Archived @@ -22344,7 +22344,7 @@

mds-openapi (link)

Stars - 8 + 9 Watchers @@ -22360,7 +22360,7 @@

mds-openapi (link)

Last Updated - 2023-11-09T16:50:13Z + 2024-07-12T19:24:55Z Archived @@ -22411,7 +22411,7 @@

lapidary (link)

Last Updated - 2024-07-02T09:17:45Z + 2024-07-12T22:48:45Z Archived @@ -24035,7 +24035,7 @@

todo-api (link)

Forks - 12 + 13 Created @@ -26134,7 +26134,7 @@

oapi (link)

Last Updated - 2024-01-19T10:26:24Z + 2024-07-12T16:22:16Z Archived @@ -26542,7 +26542,7 @@

lite (link)

Last Updated - 2024-07-07T09:12:07Z + 2024-07-12T17:58:50Z Archived @@ -27664,7 +27664,7 @@

goapi (link)

Last Updated - 2024-07-11T09:17:20Z + 2024-07-12T10:00:59Z Archived @@ -34333,7 +34333,7 @@

OpenAPI Explorer (link)

Watchers - 6 + 7 Forks @@ -34345,7 +34345,7 @@

OpenAPI Explorer (link)

Last Updated - 2024-07-09T03:49:27Z + 2024-07-12T12:27:19Z Archived @@ -35357,7 +35357,7 @@

Microsoft.OpenApi.net (link)

Forks - 226 + 227 Created @@ -35365,7 +35365,7 @@

Microsoft.OpenApi.net (link)

Last Updated - 2024-07-11T02:52:36Z + 2024-07-12T06:14:17Z Archived @@ -35553,7 +35553,7 @@

openapi-client-axios (link)

Stars - 533 + 534 Watchers @@ -35569,7 +35569,7 @@

openapi-client-axios (link)

Last Updated - 2024-07-04T07:28:31Z + 2024-07-12T05:02:58Z Archived diff --git a/docs/categories/sdk.html b/docs/categories/sdk.html index 9e6cc958..8cffbabe 100644 --- a/docs/categories/sdk.html +++ b/docs/categories/sdk.html @@ -114,7 +114,7 @@

No Yes Yes - 20659 + 20670 @@ -137,7 +137,7 @@

Yes Yes No - 132 + 133 @@ -206,7 +206,7 @@

Yes Yes Yes - 1277 + 1279 @@ -290,7 +290,7 @@

No No Yes - 9384 + 9385 @@ -359,7 +359,7 @@

No Yes Yes - 6616 + 6617 @@ -403,7 +403,7 @@

No Yes Yes - 4546 + 4547 @@ -514,7 +514,7 @@

No Yes Yes - 12268 + 12273 @@ -742,7 +742,7 @@

Yes Yes Yes - 2459 + 2461 @@ -855,7 +855,7 @@

Yes Yes Yes - 5072 + 5083 @@ -918,7 +918,7 @@

No Yes No - 692 + 696 @@ -939,7 +939,7 @@

No Yes No - 487 + 486 @@ -3020,7 +3020,7 @@

No Yes No - 1399 + 1400 @@ -3090,7 +3090,7 @@

OpenAPI Client Generators (link)

Last Updated - 2024-07-07T20:38:37Z + 2024-07-12T19:59:14Z Archived @@ -3125,7 +3125,7 @@

OpenAPI Generator (link)

Stars - 20659 + 20670 Watchers @@ -3133,7 +3133,7 @@

OpenAPI Generator (link)

Forks - 6297 + 6302 Created @@ -3141,7 +3141,7 @@

OpenAPI Generator (link)

Last Updated - 2024-07-12T00:43:58Z + 2024-07-13T03:18:57Z Archived @@ -3176,7 +3176,7 @@

OpenAPI JSON Schema Generator (link) Stars - 132 + 133 Watchers @@ -3192,7 +3192,7 @@

OpenAPI JSON Schema Generator (link) Last Updated - 2024-07-09T13:28:10Z + 2024-07-12T21:05:56Z Archived @@ -3231,7 +3231,7 @@

Kiota Api Client Generator (link)

Watchers - 41 + 42 Forks @@ -3243,7 +3243,7 @@

Kiota Api Client Generator (link)

Last Updated - 2024-07-11T11:44:07Z + 2024-07-12T13:56:20Z Archived @@ -3329,11 +3329,11 @@

Microcks (link)

Stars - 1277 + 1279 Watchers - 23 + 24 Forks @@ -3345,7 +3345,7 @@

Microcks (link)

Last Updated - 2024-07-11T12:17:47Z + 2024-07-12T20:37:52Z Archived @@ -3533,7 +3533,7 @@

go-swagger (link)

Stars - 9384 + 9385 Watchers @@ -3549,7 +3549,7 @@

go-swagger (link)

Last Updated - 2024-07-12T00:02:20Z + 2024-07-12T04:51:36Z Archived @@ -3686,7 +3686,7 @@

NSwag (link)

Stars - 6616 + 6617 Watchers @@ -3694,7 +3694,7 @@

NSwag (link)

Forks - 1224 + 1225 Created @@ -3702,7 +3702,7 @@

NSwag (link)

Last Updated - 2024-07-10T13:32:15Z + 2024-07-12T17:50:30Z Archived @@ -3788,7 +3788,7 @@

Azure AutoRest (link)

Stars - 4546 + 4547 Watchers @@ -3804,7 +3804,7 @@

Azure AutoRest (link)

Last Updated - 2024-07-11T05:38:36Z + 2024-07-12T20:39:50Z Archived @@ -4043,7 +4043,7 @@

OWASP ZAP (link)

Stars - 12268 + 12273 Watchers @@ -4059,7 +4059,7 @@

OWASP ZAP (link)

Last Updated - 2024-07-12T02:50:08Z + 2024-07-12T22:30:14Z Archived @@ -4365,7 +4365,7 @@

Counterfact (link)

Last Updated - 2024-07-12T01:05:47Z + 2024-07-12T04:46:07Z Archived @@ -4553,11 +4553,11 @@

🌿 Fern (link)

Stars - 2459 + 2461 Watchers - 17 + 19 Forks @@ -4569,7 +4569,7 @@

🌿 Fern (link)

Last Updated - 2024-07-11T21:47:18Z + 2024-07-12T23:54:52Z Archived @@ -4714,7 +4714,7 @@

Swift OpenAPI Generator (link)

Forks - 94 + 95 Created @@ -4722,7 +4722,7 @@

Swift OpenAPI Generator (link)

Last Updated - 2024-07-12T03:09:10Z + 2024-07-12T07:19:53Z Archived @@ -4808,7 +4808,7 @@

OpenAPI TypeScript (link)

Stars - 5072 + 5083 Watchers @@ -4824,7 +4824,7 @@

OpenAPI TypeScript (link)

Last Updated - 2024-07-12T03:16:01Z + 2024-07-13T03:16:33Z Archived @@ -4961,7 +4961,7 @@

openapi-ts (link)

Stars - 692 + 696 Watchers @@ -4977,7 +4977,7 @@

openapi-ts (link)

Last Updated - 2024-07-11T23:04:56Z + 2024-07-13T01:19:55Z Archived @@ -5012,7 +5012,7 @@

docusaurus-openapi (link)

Stars - 487 + 486 Watchers @@ -5028,7 +5028,7 @@

docusaurus-openapi (link)

Last Updated - 2024-07-11T05:02:03Z + 2024-07-12T08:13:18Z Archived @@ -6099,7 +6099,7 @@

yapily-openapi (link)

Last Updated - 2024-07-09T13:29:00Z + 2024-07-12T15:31:21Z Archived @@ -6303,7 +6303,7 @@

lapidary (link)

Last Updated - 2024-07-02T09:17:45Z + 2024-07-12T22:48:45Z Archived @@ -8955,7 +8955,7 @@

cinemarustback (link)

Last Updated - 2024-07-10T17:57:32Z + 2024-07-12T16:56:57Z Archived @@ -10061,7 +10061,7 @@

go-doudou (link)

Stars - 1399 + 1400 Watchers @@ -10077,7 +10077,7 @@

go-doudou (link)

Last Updated - 2024-07-09T21:25:20Z + 2024-07-12T14:10:49Z Archived diff --git a/docs/categories/security.html b/docs/categories/security.html index 87918894..7e8207d1 100644 --- a/docs/categories/security.html +++ b/docs/categories/security.html @@ -240,7 +240,7 @@

No Yes Yes - 12268 + 12273 @@ -737,7 +737,7 @@

OWASP ZAP (link)

Stars - 12268 + 12273 Watchers @@ -753,7 +753,7 @@

OWASP ZAP (link)

Last Updated - 2024-07-12T02:50:08Z + 2024-07-12T22:30:14Z Archived @@ -957,7 +957,7 @@

RESTler (link)

Last Updated - 2024-07-11T22:55:03Z + 2024-07-12T10:27:10Z Archived diff --git a/docs/categories/server-implementations.html b/docs/categories/server-implementations.html index 78ce705c..2b13768b 100644 --- a/docs/categories/server-implementations.html +++ b/docs/categories/server-implementations.html @@ -91,7 +91,7 @@

No Yes Yes - 4449 + 4450 @@ -298,7 +298,7 @@

Yes Yes Yes - 8775 + 8776 @@ -367,7 +367,7 @@

No Yes Yes - 8379 + 8380 @@ -390,7 +390,7 @@

No Yes No - 1811 + 1812 @@ -480,7 +480,7 @@

No Yes No - 4931 + 4932 @@ -503,7 +503,7 @@

No Yes No - 455 + 457 @@ -549,7 +549,7 @@

No Yes No - 3889 + 3890 @@ -616,7 +616,7 @@

No Yes No - 27866 + 27869 @@ -754,7 +754,7 @@

No Yes No - 73435 + 73465 @@ -777,7 +777,7 @@

No Yes No - 3178 + 3179 @@ -798,7 +798,7 @@

No Yes No - 2618 + 2622 @@ -819,7 +819,7 @@

No Yes No - 2214 + 2216 @@ -842,7 +842,7 @@

No Yes No - 2177 + 2179 @@ -863,7 +863,7 @@

No Yes No - 2087 + 2090 @@ -907,7 +907,7 @@

No Yes No - 1389 + 1390 @@ -928,7 +928,7 @@

No Yes No - 987 + 988 @@ -972,7 +972,7 @@

No Yes No - 688 + 689 @@ -1205,7 +1205,7 @@

No Yes No - 263 + 264 @@ -2992,7 +2992,7 @@

No Yes No - 8 + 9 @@ -8855,7 +8855,7 @@

No Yes No - 24584 + 24605 @@ -10963,7 +10963,7 @@

No Yes Yes - 498 + 499 @@ -11296,7 +11296,7 @@

Connexion (link)

Stars - 4449 + 4450 Watchers @@ -11312,7 +11312,7 @@

Connexion (link)

Last Updated - 2024-07-10T15:07:50Z + 2024-07-12T04:24:41Z Archived @@ -11755,7 +11755,7 @@

Swagger Editor (link)

Stars - 8775 + 8776 Watchers @@ -11771,7 +11771,7 @@

Swagger Editor (link)

Last Updated - 2024-07-11T15:49:57Z + 2024-07-12T14:10:19Z Archived @@ -11822,7 +11822,7 @@

Apicurio Studio (link)

Last Updated - 2024-07-11T12:59:33Z + 2024-07-12T16:12:56Z Archived @@ -11873,7 +11873,7 @@

Prism (link)

Last Updated - 2024-07-11T16:42:17Z + 2024-07-12T14:34:24Z Archived @@ -11908,7 +11908,7 @@

API Platform (link)

Stars - 8379 + 8380 Watchers @@ -11924,7 +11924,7 @@

API Platform (link)

Last Updated - 2024-07-11T03:18:30Z + 2024-07-12T09:03:19Z Archived @@ -11959,7 +11959,7 @@

Fusio (link)

Stars - 1811 + 1812 Watchers @@ -11975,7 +11975,7 @@

Fusio (link)

Last Updated - 2024-07-10T18:46:46Z + 2024-07-12T05:39:47Z Archived @@ -12065,7 +12065,7 @@

Redocly CLI (link)

Watchers - 26 + 27 Forks @@ -12077,7 +12077,7 @@

Redocly CLI (link)

Last Updated - 2024-07-11T11:13:53Z + 2024-07-12T13:55:27Z Archived @@ -12163,7 +12163,7 @@

mitmproxy2swagger (link)

Stars - 4931 + 4932 Watchers @@ -12179,7 +12179,7 @@

mitmproxy2swagger (link)

Last Updated - 2024-07-12T01:38:49Z + 2024-07-12T21:31:47Z Archived @@ -12214,11 +12214,11 @@

OpenApiSpecGeneratorPlugin (link)

Stars - 455 + 457 Watchers - 15 + 16 Forks @@ -12230,7 +12230,7 @@

OpenApiSpecGeneratorPlugin (link)

Last Updated - 2024-07-11T09:03:06Z + 2024-07-12T23:04:22Z Archived @@ -12316,7 +12316,7 @@

TypeSpec (link)

Stars - 3889 + 3890 Watchers @@ -12332,7 +12332,7 @@

TypeSpec (link)

Last Updated - 2024-07-12T02:52:29Z + 2024-07-12T21:38:39Z Archived @@ -12469,15 +12469,15 @@

Django REST Framework (link)

Stars - 27866 + 27869 Watchers - 621 + 622 Forks - 6768 + 6766 Created @@ -12485,7 +12485,7 @@

Django REST Framework (link)

Last Updated - 2024-07-11T15:59:32Z + 2024-07-12T21:58:50Z Archived @@ -12638,7 +12638,7 @@

Counterfact (link)

Last Updated - 2024-07-12T01:05:47Z + 2024-07-12T04:46:07Z Archived @@ -12775,15 +12775,15 @@

FastAPI (link)

Stars - 73435 + 73465 Watchers - 677 + 676 Forks - 6186 + 6189 Created @@ -12791,7 +12791,7 @@

FastAPI (link)

Last Updated - 2024-07-12T03:29:05Z + 2024-07-13T01:19:44Z Archived @@ -12826,7 +12826,7 @@

springdoc-openapi (link)

Stars - 3178 + 3179 Watchers @@ -12842,7 +12842,7 @@

springdoc-openapi (link)

Last Updated - 2024-07-11T07:07:56Z + 2024-07-12T21:22:41Z Archived @@ -12877,7 +12877,7 @@

uvicorn-gunicorn-fastapi-docker (link)< Stars - 2618 + 2622 Watchers @@ -12885,7 +12885,7 @@

uvicorn-gunicorn-fastapi-docker (link)< Forks - 329 + 330 Created @@ -12893,7 +12893,7 @@

uvicorn-gunicorn-fastapi-docker (link)< Last Updated - 2024-07-11T21:56:46Z + 2024-07-12T23:59:00Z Archived @@ -12928,7 +12928,7 @@

drf-spectacular (link)

Stars - 2214 + 2216 Watchers @@ -12944,7 +12944,7 @@

drf-spectacular (link)

Last Updated - 2024-07-07T21:44:36Z + 2024-07-12T16:04:05Z Archived @@ -12979,11 +12979,11 @@

Schemathesis (link)

Stars - 2177 + 2179 Watchers - 19 + 20 Forks @@ -12995,7 +12995,7 @@

Schemathesis (link)

Last Updated - 2024-07-12T01:31:08Z + 2024-07-12T22:57:00Z Archived @@ -13030,7 +13030,7 @@

msgspec (link)

Stars - 2087 + 2090 Watchers @@ -13038,7 +13038,7 @@

msgspec (link)

Forks - 60 + 61 Created @@ -13046,7 +13046,7 @@

msgspec (link)

Last Updated - 2024-07-11T21:11:38Z + 2024-07-12T15:24:54Z Archived @@ -13132,7 +13132,7 @@

OpenAPI-gui (link)

Stars - 1389 + 1390 Watchers @@ -13148,7 +13148,7 @@

OpenAPI-gui (link)

Last Updated - 2024-07-09T15:09:22Z + 2024-07-12T18:42:28Z Archived @@ -13183,7 +13183,7 @@

apiflask (link)

Stars - 987 + 988 Watchers @@ -13199,7 +13199,7 @@

apiflask (link)

Last Updated - 2024-07-12T02:36:33Z + 2024-07-13T00:01:54Z Archived @@ -13285,7 +13285,7 @@

API Sprout (link)

Stars - 688 + 689 Watchers @@ -13301,7 +13301,7 @@

API Sprout (link)

Last Updated - 2024-07-11T16:29:16Z + 2024-07-12T17:20:31Z Archived @@ -13340,7 +13340,7 @@

stackql (link)

Watchers - 10 + 12 Forks @@ -13352,7 +13352,7 @@

stackql (link)

Last Updated - 2024-07-09T13:48:55Z + 2024-07-12T08:51:41Z Archived @@ -13646,7 +13646,7 @@

rest (link)

Watchers - 4 + 5 Forks @@ -13658,7 +13658,7 @@

rest (link)

Last Updated - 2024-07-07T07:09:48Z + 2024-07-12T09:58:44Z Archived @@ -13846,7 +13846,7 @@

chanfana (link)

Stars - 263 + 264 Watchers @@ -13854,7 +13854,7 @@

chanfana (link)

Forks - 35 + 36 Created @@ -13862,7 +13862,7 @@

chanfana (link)

Last Updated - 2024-07-09T05:11:15Z + 2024-07-12T21:27:53Z Archived @@ -14513,7 +14513,7 @@

tools.openapis.org (link)

Watchers - 11 + 12 Forks @@ -14525,7 +14525,7 @@

tools.openapis.org (link)

Last Updated - 2024-07-11T03:33:34Z + 2024-07-12T03:32:07Z Archived @@ -15231,7 +15231,7 @@

echo-boilerplate (link)

Forks - 16 + 17 Created @@ -15482,7 +15482,7 @@

data-fair (link)

Watchers - 3 + 4 Forks @@ -17114,7 +17114,7 @@

aiopenapi3 (link)

Watchers - 2 + 3 Forks @@ -17126,7 +17126,7 @@

aiopenapi3 (link)

Last Updated - 2024-07-09T09:09:17Z + 2024-07-12T13:47:23Z Archived @@ -18181,7 +18181,7 @@

mds-openapi (link)

Stars - 8 + 9 Watchers @@ -18197,7 +18197,7 @@

mds-openapi (link)

Last Updated - 2023-11-09T16:50:13Z + 2024-07-12T19:24:55Z Archived @@ -18444,7 +18444,7 @@

sandbox (link)

Forks - 2 + 3 Created @@ -18452,7 +18452,7 @@

sandbox (link)

Last Updated - 2024-07-09T15:45:29Z + 2024-07-12T15:56:34Z Archived @@ -19829,7 +19829,7 @@

sonar-openapi (link)

Last Updated - 2024-06-28T10:59:39Z + 2024-07-12T12:08:21Z Archived @@ -20390,7 +20390,7 @@

angular-demo-application-source (link)< Last Updated - 2024-04-03T13:19:18Z + 2024-07-12T17:21:46Z Archived @@ -20433,7 +20433,7 @@

todo-api (link)

Forks - 12 + 13 Created @@ -22418,7 +22418,7 @@

pulumi-provider-template (link)

Watchers - 2 + 3 Forks @@ -22430,7 +22430,7 @@

pulumi-provider-template (link)

Last Updated - 2024-07-11T01:28:27Z + 2024-07-12T20:34:10Z Archived @@ -23501,7 +23501,7 @@

go-aas-proxy (link)

Last Updated - 2024-07-11T21:40:18Z + 2024-07-12T12:45:34Z Archived @@ -23591,7 +23591,7 @@

rest (link)

Watchers - 1 + 2 Forks @@ -23603,7 +23603,7 @@

rest (link)

Last Updated - 2023-04-25T11:01:23Z + 2024-07-12T06:33:28Z Archived @@ -24062,7 +24062,7 @@

deputy (link)

Last Updated - 2024-03-25T03:56:12Z + 2024-07-13T02:50:44Z Archived @@ -25427,7 +25427,7 @@

protien-data-visualizer (link)

Watchers - 2 + 3 Forks @@ -25439,7 +25439,7 @@

protien-data-visualizer (link)

Last Updated - 2024-07-10T18:50:20Z + 2024-07-12T23:25:20Z Archived @@ -28142,7 +28142,7 @@

bridgewayhub (link)

Last Updated - 2024-07-10T18:28:30Z + 2024-07-12T18:44:15Z Archived @@ -30233,7 +30233,7 @@

eventbridge (link)

Last Updated - 2024-07-03T11:38:17Z + 2024-07-12T12:40:59Z Archived @@ -30539,7 +30539,7 @@

etherscan-openapi (link)

Last Updated - 2024-07-03T13:09:51Z + 2024-07-12T18:12:22Z Archived @@ -30547,7 +30547,7 @@

etherscan-openapi (link)

Language - + TypeScript @@ -32410,7 +32410,7 @@

full-stack-fastapi-template (link)

Stars - 24584 + 24605 Watchers @@ -32418,7 +32418,7 @@

full-stack-fastapi-template (link)

Forks - 4159 + 4161 Created @@ -32426,7 +32426,7 @@

full-stack-fastapi-template (link)

Last Updated - 2024-07-12T02:55:18Z + 2024-07-12T20:57:13Z Archived @@ -37510,7 +37510,7 @@

APIClarity (link)

Stars - 498 + 499 Watchers @@ -37526,7 +37526,7 @@

APIClarity (link)

Last Updated - 2024-07-05T10:43:20Z + 2024-07-12T06:38:59Z Archived diff --git a/docs/categories/server.html b/docs/categories/server.html index b9f9ba23..3c885ed4 100644 --- a/docs/categories/server.html +++ b/docs/categories/server.html @@ -91,7 +91,7 @@

No Yes Yes - 4449 + 4450 @@ -114,7 +114,7 @@

No Yes Yes - 3324 + 3325 @@ -229,7 +229,7 @@

No Yes Yes - 8379 + 8380 @@ -275,7 +275,7 @@

No Yes No - 1811 + 1812 @@ -342,7 +342,7 @@

No Yes No - 1639 + 1641 @@ -433,7 +433,7 @@

No Yes Yes - 5916 + 5917 @@ -569,7 +569,7 @@

No Yes No - 637 + 639 @@ -592,7 +592,7 @@

Yes Yes No - 1651 + 1657 @@ -2406,7 +2406,7 @@

Yes Yes No - 597 + 598 @@ -2869,7 +2869,7 @@

Connexion (link)

Stars - 4449 + 4450 Watchers @@ -2885,7 +2885,7 @@

Connexion (link)

Last Updated - 2024-07-10T15:07:50Z + 2024-07-12T04:24:41Z Archived @@ -2920,11 +2920,11 @@

tsoa (link)

Stars - 3324 + 3325 Watchers - 28 + 29 Forks @@ -2936,7 +2936,7 @@

tsoa (link)

Last Updated - 2024-07-11T20:03:35Z + 2024-07-12T11:30:12Z Archived @@ -3175,7 +3175,7 @@

API Platform (link)

Stars - 8379 + 8380 Watchers @@ -3191,7 +3191,7 @@

API Platform (link)

Last Updated - 2024-07-11T03:18:30Z + 2024-07-12T09:03:19Z Archived @@ -3277,7 +3277,7 @@

Fusio (link)

Stars - 1811 + 1812 Watchers @@ -3293,7 +3293,7 @@

Fusio (link)

Last Updated - 2024-07-10T18:46:46Z + 2024-07-12T05:39:47Z Archived @@ -3430,7 +3430,7 @@

@nestjs/swagger (link)

Stars - 1639 + 1641 Watchers @@ -3446,7 +3446,7 @@

@nestjs/swagger (link)

Last Updated - 2024-07-11T00:16:27Z + 2024-07-13T02:27:35Z Archived @@ -3634,7 +3634,7 @@

SpringFox (link)

Stars - 5916 + 5917 Watchers @@ -3650,7 +3650,7 @@

SpringFox (link)

Last Updated - 2024-07-10T00:42:51Z + 2024-07-12T14:49:25Z Archived @@ -3897,7 +3897,7 @@

Swift OpenAPI Generator (link)

Forks - 94 + 95 Created @@ -3905,7 +3905,7 @@

Swift OpenAPI Generator (link)

Last Updated - 2024-07-12T03:09:10Z + 2024-07-12T07:19:53Z Archived @@ -3940,7 +3940,7 @@

Fuego (link)

Stars - 637 + 639 Watchers @@ -3956,7 +3956,7 @@

Fuego (link)

Last Updated - 2024-07-11T08:55:41Z + 2024-07-12T16:46:34Z Archived @@ -3991,7 +3991,7 @@

Huma (link)

Stars - 1651 + 1657 Watchers @@ -4007,7 +4007,7 @@

Huma (link)

Last Updated - 2024-07-11T22:40:21Z + 2024-07-12T16:35:29Z Archived @@ -4199,7 +4199,7 @@

bricks (link)

Watchers - 10 + 12 Forks @@ -4211,7 +4211,7 @@

bricks (link)

Last Updated - 2024-06-11T07:51:53Z + 2024-07-12T14:16:51Z Archived @@ -4466,7 +4466,7 @@

chia-api (link)

Last Updated - 2024-07-04T21:00:19Z + 2024-07-12T21:24:27Z Archived @@ -7730,7 +7730,7 @@

eventbridge (link)

Last Updated - 2024-07-03T11:38:17Z + 2024-07-12T12:40:59Z Archived @@ -8377,7 +8377,7 @@

openapi-backend (link)

Stars - 597 + 598 Watchers @@ -8393,7 +8393,7 @@

openapi-backend (link)

Last Updated - 2024-07-09T01:45:31Z + 2024-07-12T05:03:49Z Archived diff --git a/docs/categories/testing-tools.html b/docs/categories/testing-tools.html index 61b71a3a..ce36d690 100644 --- a/docs/categories/testing-tools.html +++ b/docs/categories/testing-tools.html @@ -114,7 +114,7 @@

No Yes No - 2177 + 2179 @@ -242,11 +242,11 @@

Schemathesis (link)

Stars - 2177 + 2179 Watchers - 19 + 20 Forks @@ -258,7 +258,7 @@

Schemathesis (link)

Last Updated - 2024-07-12T01:31:08Z + 2024-07-12T22:57:00Z Archived diff --git a/docs/categories/testing.html b/docs/categories/testing.html index caff50e9..db6e9009 100644 --- a/docs/categories/testing.html +++ b/docs/categories/testing.html @@ -173,7 +173,7 @@

No Yes Yes - 4162 + 4163 @@ -368,7 +368,7 @@

Yes Yes No - 706 + 707 @@ -717,7 +717,7 @@

No Yes No - 6096 + 6099 @@ -2917,7 +2917,7 @@

Dredd (link)

Stars - 4162 + 4163 Watchers @@ -2933,7 +2933,7 @@

Dredd (link)

Last Updated - 2024-07-11T15:55:02Z + 2024-07-12T09:33:53Z Archived @@ -3035,7 +3035,7 @@

portman (link)

Last Updated - 2024-07-09T20:15:35Z + 2024-07-12T19:15:58Z Archived @@ -3086,7 +3086,7 @@

Step CI (link)

Last Updated - 2024-07-08T23:58:18Z + 2024-07-13T00:26:14Z Archived @@ -3376,7 +3376,7 @@

Restish (link)

Stars - 706 + 707 Watchers @@ -3392,7 +3392,7 @@

Restish (link)

Last Updated - 2024-07-12T03:25:44Z + 2024-07-12T12:37:37Z Archived @@ -4192,7 +4192,7 @@

mockoon (link)

Stars - 6096 + 6099 Watchers @@ -4200,7 +4200,7 @@

mockoon (link)

Forks - 350 + 353 Created @@ -4208,7 +4208,7 @@

mockoon (link)

Last Updated - 2024-07-11T17:20:36Z + 2024-07-13T00:37:24Z Archived @@ -5012,7 +5012,7 @@

mockoon.com (link)

Watchers - 3 + 4 Forks @@ -5024,7 +5024,7 @@

mockoon.com (link)

Last Updated - 2024-07-11T14:59:32Z + 2024-07-12T13:16:44Z Archived @@ -5318,7 +5318,7 @@

commons-server (link)

Watchers - 3 + 4 Forks @@ -5330,7 +5330,7 @@

commons-server (link)

Last Updated - 2023-05-26T17:09:13Z + 2024-07-12T09:46:40Z Archived @@ -5381,7 +5381,7 @@

vscode-extension (link)

Last Updated - 2024-07-03T05:46:13Z + 2024-07-12T03:32:51Z Archived @@ -6236,7 +6236,7 @@

commons (link)

Watchers - 3 + 4 Forks @@ -6248,7 +6248,7 @@

commons (link)

Last Updated - 2023-01-28T02:03:50Z + 2024-07-12T09:46:31Z Archived @@ -7370,7 +7370,7 @@

EvoMaster (link)

Last Updated - 2024-07-11T15:03:09Z + 2024-07-12T11:08:05Z Archived @@ -8798,7 +8798,7 @@

RESTler (link)

Last Updated - 2024-07-11T22:55:03Z + 2024-07-12T10:27:10Z Archived diff --git a/docs/categories/text-editors.html b/docs/categories/text-editors.html index e990c26b..c07b1f83 100644 --- a/docs/categories/text-editors.html +++ b/docs/categories/text-editors.html @@ -157,7 +157,7 @@

Yes Yes Yes - 8775 + 8776 @@ -594,7 +594,7 @@

Swagger Editor (link)

Stars - 8775 + 8776 Watchers @@ -610,7 +610,7 @@

Swagger Editor (link)

Last Updated - 2024-07-11T15:49:57Z + 2024-07-12T14:10:19Z Archived diff --git a/docs/categories/unclassified.html b/docs/categories/unclassified.html index 319749bd..77b28411 100644 --- a/docs/categories/unclassified.html +++ b/docs/categories/unclassified.html @@ -530,7 +530,7 @@

No Yes No - 1 + N/A @@ -1189,7 +1189,7 @@

modelina (link)

Forks - 165 + 166 Created @@ -2252,7 +2252,7 @@

cmgd_web (link)

Stars - 1 + N/A Watchers @@ -2268,7 +2268,7 @@

cmgd_web (link)

Last Updated - 2022-09-30T04:25:48Z + 2024-07-12T06:24:26Z Archived diff --git a/docs/categories/user-interfaces.html b/docs/categories/user-interfaces.html index 6b4d0693..9abf3b77 100644 --- a/docs/categories/user-interfaces.html +++ b/docs/categories/user-interfaces.html @@ -91,7 +91,7 @@

Yes Yes No - 26021 + 26023 @@ -275,7 +275,7 @@

swagger-ui (link)

Stars - 26021 + 26023 Watchers @@ -291,7 +291,7 @@

swagger-ui (link)

Last Updated - 2024-07-12T03:19:48Z + 2024-07-13T01:30:22Z Archived @@ -342,7 +342,7 @@

Redoc (link)

Last Updated - 2024-07-12T01:04:42Z + 2024-07-12T22:35:34Z Archived diff --git a/src/_data/tools.yaml b/src/_data/tools.yaml index 89eb802b..30705d76 100644 --- a/src/_data/tools.yaml +++ b/src/_data/tools.yaml @@ -159,17 +159,17 @@ Connexion is a modern Python web framework that makes spec-first and api-first development easy. created: '2015-05-19T13:05:58Z' - updated: '2024-07-10T15:07:50Z' + updated: '2024-07-12T04:24:41Z' language: Python archived: false - stars: 4449 + stars: 4450 watchers: 84 forks: 756 owner: spec-first logo: https://avatars.githubusercontent.com/u/58754196?v=4 license: Apache-2.0 - repoEtag: '"883a170f6ffdc927ca3f6b6ff6539c34c9a6e28a6f90d294c7f2b448973a5cd0"' - repoLastModified: Wed, 10 Jul 2024 15:07:50 GMT + repoEtag: '"d929a58bf40c4bc87c1988fdc99fd5f1efce43bbf7ed0a9200055ed4311a77a8"' + repoLastModified: Fri, 12 Jul 2024 04:24:41 GMT foundInMaster: true homepage: https://github.com/zalando/connexion id: 2d575abdf2671028868058b2442d9131 @@ -291,17 +291,17 @@ repositoryId: 679280065 description: Beautiful API references from OpenAPI/Swagger files ✨ created: '2023-08-16T13:42:32Z' - updated: '2024-07-12T03:27:50Z' + updated: '2024-07-13T03:19:34Z' language: TypeScript archived: false - stars: 5080 + stars: 5102 watchers: 20 - forks: 144 + forks: 145 owner: scalar logo: https://avatars.githubusercontent.com/u/301879?v=4 license: MIT - repoEtag: '"07773e51db3033979824f10aa49d881f3fd0131109e74c2d8f3b899f6facf3af"' - repoLastModified: Fri, 12 Jul 2024 03:27:50 GMT + repoEtag: '"ba65aba66d425ac63a7e0fb91bf0612aee2d9a4d47857d64072dae37dc2de5f2"' + repoLastModified: Sat, 13 Jul 2024 03:19:34 GMT foundInMaster: true - source: https://openapi.tools/ name: Scribe @@ -379,7 +379,7 @@ repositoryId: 45250726 description: 📘 OpenAPI/Swagger-generated API Reference Documentation created: '2015-10-30T12:53:02Z' - updated: '2024-07-12T01:04:42Z' + updated: '2024-07-12T22:35:34Z' language: TypeScript archived: false stars: 22933 @@ -388,8 +388,8 @@ owner: Redocly logo: https://avatars.githubusercontent.com/u/32099856?v=4 license: MIT - repoEtag: '"4b9c48a1c06b66498c13e6dd99ce090c400c6569d3d90f5bfaae313a49b34140"' - repoLastModified: Fri, 12 Jul 2024 01:04:42 GMT + repoEtag: '"513d1eb42c96fef60e31c746ff908c567ab2b92d6b9a38722407bea5d8e7272e"' + repoLastModified: Fri, 12 Jul 2024 22:35:34 GMT foundInMaster: true - source: https://openapi.tools/ name: RestCase Docs @@ -488,17 +488,17 @@ repositoryId: 337689065 description: OpenAPI Diff and Breaking Changes created: '2021-02-10T10:28:36Z' - updated: '2024-07-11T13:42:43Z' + updated: '2024-07-12T22:20:30Z' language: Go archived: false stars: 630 - watchers: 10 - forks: 55 + watchers: 12 + forks: 56 owner: Tufin logo: https://avatars.githubusercontent.com/u/5352131?v=4 license: Apache-2.0 - repoEtag: '"9435bfaf7a9bf1963820e1c8f7f5096eecbc46b724c532e60c10572a01daf7ac"' - repoLastModified: Thu, 11 Jul 2024 13:42:43 GMT + repoEtag: '"674dc8f99bdbe4cc09fae8b43c5ef08de2fd85df1f318f00c34a534985595efc"' + repoLastModified: Fri, 12 Jul 2024 22:20:30 GMT foundInMaster: true name: oasdiff language: Go @@ -555,7 +555,7 @@ owner: opticdev logo: https://avatars.githubusercontent.com/u/34556970?v=4 license: MIT - repoEtag: '"b577a999e13418829d6a4eb3b82dcc807c755e7c0c631189160e6333f1319411"' + repoEtag: '"3ed34637ce1b05dcd2151489ede40a2b16220b910b4398ff497db60825b8a181"' repoLastModified: Wed, 03 Jul 2024 00:17:54 GMT foundInMaster: true id: 8c3d08406ca659662808d51ddc10b4e4 @@ -971,7 +971,7 @@ Swagger definitions supporting jQuery, Angular, AXIOS, Fetch API, Aurelia and Angular Strictly Typed Forms created: '2020-03-14T00:15:16Z' - updated: '2024-07-07T20:38:37Z' + updated: '2024-07-12T19:59:14Z' language: TypeScript archived: false stars: 64 @@ -980,8 +980,8 @@ owner: zijianhuang logo: https://avatars.githubusercontent.com/u/8484970?v=4 license: MIT - repoEtag: '"b5b55b521e4db2da7a2e048957bd4e0cf79f820575da7d70881584a1ed435d49"' - repoLastModified: Sun, 07 Jul 2024 20:38:37 GMT + repoEtag: '"44dae24f2a9907e37d7b8bace896aef11b4a66859517541de351fafec9ea5354"' + repoLastModified: Fri, 12 Jul 2024 19:59:14 GMT foundInMaster: true id: 7db93864fa7fbbeccc6ada53c6f9cc62 - source: @@ -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-07-12T00:43:58Z' + updated: '2024-07-13T03:18:57Z' language: Java archived: false - stars: 20659 + stars: 20670 watchers: 216 - forks: 6297 + forks: 6302 owner: OpenAPITools logo: https://avatars.githubusercontent.com/u/37325267?v=4 license: Apache-2.0 - repoEtag: '"8992aaafe644592e40bffc910007c92883da5e3e8ef967bf82aaefec25051203"' - repoLastModified: Fri, 12 Jul 2024 00:43:58 GMT + repoEtag: '"31f7cebd528cad6e7a73acbf9628c5ea8f983d41d8711e9e9387da0ccadec3b1"' + repoLastModified: Sat, 13 Jul 2024 03:18:57 GMT foundInMaster: true id: 0418f8afcd0196c648d1a46c0c5c20d1 v3_1_link: https://github.com/OpenAPITools/openapi-generator/issues/9083 @@ -1040,17 +1040,17 @@ repositoryId: 544314254 description: ' OpenAPI JSON Schema Generator allows auto-generation of API client libraries with a focus on JSON schema given an OpenAPI document' created: '2022-10-02T06:47:59Z' - updated: '2024-07-09T13:28:10Z' + updated: '2024-07-12T21:05:56Z' language: Java archived: false - stars: 132 + stars: 133 watchers: 3 forks: 11 owner: openapi-json-schema-tools logo: https://avatars.githubusercontent.com/u/114849992?v=4 license: Apache-2.0 - repoEtag: '"21b811ba3616c72bd4ac785e22a78d59ef6b617bcdf7b9cb6e13520705c1791d"' - repoLastModified: Tue, 09 Jul 2024 13:28:10 GMT + repoEtag: '"80ee1d59d14dc27c34d02ce7b4999549235a475134c85f88b2c3e6e077e72029"' + repoLastModified: Fri, 12 Jul 2024 21:05:56 GMT category: - Code Generators - SDK @@ -1095,17 +1095,17 @@ repositoryId: 323665366 description: OpenAPI based HTTP Client code generator created: '2020-12-22T15:35:49Z' - updated: '2024-07-11T11:44:07Z' + updated: '2024-07-12T13:56:20Z' language: C# archived: false stars: 2459 - watchers: 41 + watchers: 42 forks: 174 owner: microsoft logo: https://avatars.githubusercontent.com/u/6154722?v=4 license: MIT - repoEtag: '"32529778901a7c472c26398f2a21f046ea47c7b2e43280f105b53cadcc7a4a55"' - repoLastModified: Thu, 11 Jul 2024 11:44:07 GMT + repoEtag: '"4af21784221b74fc6242c41199540fa0eeb0b5fbdde339a1e6f83857382963fa"' + repoLastModified: Fri, 12 Jul 2024 13:56:20 GMT foundInMaster: true - source: https://openapi.tools/ name: FabriKt @@ -1167,7 +1167,7 @@ owner: bump-sh logo: https://avatars.githubusercontent.com/u/33217836?v=4 license: MIT - repoEtag: '"5966c31e7a8b7c2345d30a478ff691a6704fdbed0ffef339e91551aa26ae6209"' + repoEtag: '"54d67fcd3ae5b8ae4a9f7c9c1c157d33e7d58df3efc64d630bd8cd1a83f999a8"' repoLastModified: Tue, 09 Jul 2024 02:36:16 GMT foundInMaster: true category: @@ -1269,7 +1269,7 @@ owner: 42Crunch logo: https://avatars.githubusercontent.com/u/25365245?v=4 license: AGPL-3.0 - repoEtag: '"0d234603034ed1889d3fd6abb2e41a44e05985989acc3ceff1c343d1651264b0"' + repoEtag: '"85cb665920d14c27f9b80daa1b974645f7903b7308ef2d169e07c3bac47c646d"' repoLastModified: Wed, 10 Jul 2024 15:18:26 GMT foundInMaster: true id: 782ecbb10f1ff8ac9685e0ed24e52e58 @@ -1335,17 +1335,17 @@ repositoryId: 19390712 description: Swagger Editor created: '2014-05-02T22:47:10Z' - updated: '2024-07-11T15:49:57Z' + updated: '2024-07-12T14:10:19Z' language: JavaScript archived: false - stars: 8775 + stars: 8776 watchers: 257 forks: 2235 owner: swagger-api logo: https://avatars.githubusercontent.com/u/7658037?v=4 license: Apache-2.0 - repoEtag: '"d83690bba7139d0256c0985ae7939791c61d62a535ad63a655ad5f27f0278457"' - repoLastModified: Thu, 11 Jul 2024 15:49:57 GMT + repoEtag: '"affec43cf2385e5746e21041c9bb311191b0650880e153b7a05e169045d13a68"' + repoLastModified: Fri, 12 Jul 2024 14:10:19 GMT foundInMaster: true id: 951cf61d12c812ef9b201ad76b5d278d v3_1: true @@ -1437,17 +1437,17 @@ repositoryId: 192987405 description: Hackolade(https://hackolade.com) plugin for OpenAPI 3 API documentation created: '2019-06-20T21:05:49Z' - updated: '2024-07-03T11:38:07Z' + updated: '2024-07-12T12:43:59Z' language: JavaScript archived: false stars: 14 - watchers: 6 + watchers: 7 forks: 10 owner: hackolade logo: https://avatars.githubusercontent.com/u/20265734?v=4 license: NOASSERTION - repoEtag: '"ca2dc2e3278cd1e8f39ac935b62cc774d3d2db406df09378df69101460bb5920"' - repoLastModified: Wed, 03 Jul 2024 11:38:07 GMT + repoEtag: '"55e0dc1dc53d40819309cfff91d10602ad8b817f4ab8d4e702c38afcbd028018"' + repoLastModified: Fri, 12 Jul 2024 12:43:59 GMT foundInMaster: true id: 0ca14e83c7b680313bbc57c0a56e6c05 v3_1: true @@ -1474,7 +1474,7 @@ repositoryId: 69595482 description: Open Source API Design created: '2016-09-29T18:22:33Z' - updated: '2024-07-11T12:59:33Z' + updated: '2024-07-12T16:12:56Z' language: TypeScript archived: false stars: 959 @@ -1483,8 +1483,8 @@ owner: Apicurio logo: https://avatars.githubusercontent.com/u/28107283?v=4 license: Apache-2.0 - repoEtag: '"c561325300c554e55ff4c7b5b64eb1e33ea9c31aa7a65af1a765f5084ea57c48"' - repoLastModified: Thu, 11 Jul 2024 12:59:33 GMT + repoEtag: '"5f2b81e76e6677ed924f09f0bdf8b4395e4e3f799a4a664c393dbd07adfbdc4b"' + repoLastModified: Fri, 12 Jul 2024 16:12:56 GMT foundInMaster: true homepage: https://github.com/Apicurio/apicurio-studio id: efe9656e80c1bf6304903ca5a60fe5a6 @@ -1690,7 +1690,7 @@ 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-07-11T16:42:17Z' + updated: '2024-07-12T14:34:24Z' language: TypeScript archived: false stars: 4120 @@ -1699,8 +1699,8 @@ owner: stoplightio logo: https://avatars.githubusercontent.com/u/10767217?v=4 license: Apache-2.0 - repoEtag: '"f2f2d2a52a1a1e396ec214cc2a1a2b80786b87c515457ee178663d81ef410042"' - repoLastModified: Thu, 11 Jul 2024 16:42:17 GMT + repoEtag: '"e7471bbd1185ce98d983a6d9b5334b9f93acab51fa0e1e11c5d23ee64656b816"' + repoLastModified: Fri, 12 Jul 2024 14:34:24 GMT foundInMaster: true useMasterProperties: true id: 15aad8cd322242e03733b07f2a37890a @@ -1733,17 +1733,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-07-11T12:17:47Z' + updated: '2024-07-12T20:37:52Z' language: Java archived: false - stars: 1277 - watchers: 23 + stars: 1279 + watchers: 24 forks: 203 owner: microcks logo: https://avatars.githubusercontent.com/u/11051048?v=4 license: Apache-2.0 - repoEtag: '"be00fde0b261584eb01e6524b4f577834b51e866d813d0a50cf6ce816d6a1b58"' - repoLastModified: Thu, 11 Jul 2024 12:17:47 GMT + repoEtag: '"4eff6c7210bd62b936b67c667e60eff6c89e3532523ba2dd9fd8462dd7ffb538"' + repoLastModified: Fri, 12 Jul 2024 20:37:52 GMT foundInMaster: true id: 1c0e918b5a733b0f1726199e3ea101d6 - source: https://openapi.tools/ @@ -1912,17 +1912,17 @@ repositoryId: 61366800 description: Build OpenAPI-compliant REST APIs using TypeScript and Node created: '2016-06-17T10:42:50Z' - updated: '2024-07-11T20:03:35Z' + updated: '2024-07-12T11:30:12Z' language: TypeScript archived: false - stars: 3324 - watchers: 28 + stars: 3325 + watchers: 29 forks: 481 owner: lukeautry logo: https://avatars.githubusercontent.com/u/8770560?v=4 license: MIT - repoEtag: '"41074f44c361c3d2852562222d2bdb840dec4ff9fc113995af0acaece2c0eaf9"' - repoLastModified: Thu, 11 Jul 2024 20:03:35 GMT + repoEtag: '"8ac7196faed922df59cf801086563473cd72a5dc83e48d3a47b05d8d5d2b0579"' + repoLastModified: Fri, 12 Jul 2024 11:30:12 GMT foundInMaster: true id: 2529db76d3d9f042b0c624f65b13fc41 - source: https://openapi.tools/ @@ -2091,17 +2091,17 @@ Create REST and GraphQL APIs, scaffold Jamstack webapps, stream changes in real-time. created: '2015-03-06T21:46:05Z' - updated: '2024-07-11T03:18:30Z' + updated: '2024-07-12T09:03:19Z' language: TypeScript archived: false - stars: 8379 + stars: 8380 watchers: 215 forks: 947 owner: api-platform logo: https://avatars.githubusercontent.com/u/13420081?v=4 license: MIT - repoEtag: '"19f488bb2873f63ade694ba723375dc96311871ddc40951512978288984692ae"' - repoLastModified: Thu, 11 Jul 2024 03:18:30 GMT + repoEtag: '"fc68aaa5aeb57066630c1b0632e6f8258a4830d12406b48f0399ffa879acd086"' + repoLastModified: Fri, 12 Jul 2024 09:03:19 GMT foundInMaster: true id: d14f5904300aabf1ceef4660a6b3d57e - source: https://openapi.tools/ @@ -2157,17 +2157,17 @@ repositoryId: 39904377 description: Open source API management platform created: '2015-07-29T16:34:52Z' - updated: '2024-07-10T18:46:46Z' + updated: '2024-07-12T05:39:47Z' language: PHP archived: false - stars: 1811 + stars: 1812 watchers: 58 forks: 217 owner: apioo logo: https://avatars.githubusercontent.com/u/18172950?v=4 license: Apache-2.0 - repoEtag: '"455869d995eb2d6cf6f708bdced8b2d573f89214f65d90b937642b52bb6ff6a7"' - repoLastModified: Wed, 10 Jul 2024 18:46:46 GMT + repoEtag: '"62a5ae5bed1095b640cc20bbc75acabb4595b0ce2c0ee3cf174575c82a646416"' + repoLastModified: Fri, 12 Jul 2024 05:39:47 GMT foundInMaster: true id: 5458da680012a142d20e79ac150bc4ab - source: @@ -2273,17 +2273,17 @@ repositoryId: 105440153 description: 'OpenAPI (Swagger) module for Nest framework (node.js) :earth_americas:' created: '2017-10-01T12:20:24Z' - updated: '2024-07-11T00:16:27Z' + updated: '2024-07-13T02:27:35Z' language: TypeScript archived: false - stars: 1639 + stars: 1641 watchers: 31 forks: 450 owner: nestjs logo: https://avatars.githubusercontent.com/u/28507035?v=4 license: MIT - repoEtag: '"4a713dde056b0427ffbd0dd9d7d3c5d9ec030d5acea7146b3e99e71ceda6ea04"' - repoLastModified: Thu, 11 Jul 2024 00:16:27 GMT + repoEtag: '"455c4306247b37b2046d41b8f3f6000a28f0bf7d6151959981792e400afc963f"' + repoLastModified: Sat, 13 Jul 2024 02:27:35 GMT foundInMaster: true id: 7071babd9853fc901c5decfa9b465b67 - source: @@ -2346,17 +2346,17 @@ repositoryId: 12590052 description: Language-agnostic HTTP API Testing Tool created: '2013-09-04T12:21:35Z' - updated: '2024-07-11T15:55:02Z' + updated: '2024-07-12T09:33:53Z' language: JavaScript archived: false - stars: 4162 + stars: 4163 watchers: 76 forks: 280 owner: apiaryio logo: https://avatars.githubusercontent.com/u/765943?v=4 license: MIT - repoEtag: '"14efebfa58d65918b445938a549ecf3f8685f2cd025eee8923b742392c06a2a4"' - repoLastModified: Thu, 11 Jul 2024 15:55:02 GMT + repoEtag: '"c678f805495657ce09b4d0c3e76c3ecb2f2d0bd36563dc6ca857385f24533d36"' + repoLastModified: Fri, 12 Jul 2024 09:33:53 GMT foundInMaster: true id: bb2e4b0879fce0d8706dcebfd2c10a4c - source: @@ -2386,11 +2386,11 @@ archived: false stars: 887 watchers: 18 - forks: 204 + forks: 203 owner: cdimascio logo: https://avatars.githubusercontent.com/u/4706618?v=4 license: MIT - repoEtag: '"13bc1c476c7bf04093709ee3e54db01d037a71d9824a0d969e0da3d164449a23"' + repoEtag: '"3eb832b5b9fb2268bb3a54cd91decf641cf07fa6904aff3d09b85427992a090f"' repoLastModified: Wed, 03 Jul 2024 13:09:59 GMT foundInMaster: true id: 3a27bc1a71642e0c1c020c41dc66e206 @@ -2454,7 +2454,7 @@ Port OpenAPI Specs to Postman Collections, inject test suite and run via Newman 👨🏽‍🚀 created: '2021-05-05T10:42:29Z' - updated: '2024-07-09T20:15:35Z' + updated: '2024-07-12T19:15:58Z' language: TypeScript archived: false stars: 622 @@ -2463,8 +2463,8 @@ owner: apideck-libraries logo: https://avatars.githubusercontent.com/u/73573473?v=4 license: Apache-2.0 - repoEtag: '"21bce0d4876df2818ae11e60eebd71f1d7f03fa29d4fed4015f11d4fd91f68dc"' - repoLastModified: Tue, 09 Jul 2024 20:15:35 GMT + repoEtag: '"5d0d87a57aaf279f06f0718bee3b8f44363891fedd9776e393c6aea9218d0a68"' + repoLastModified: Fri, 12 Jul 2024 19:15:58 GMT foundInMaster: true id: a03cdb329f630a946a946dfe26802c43 - source: https://openapi.tools/ @@ -2492,7 +2492,7 @@ repositoryId: 537500924 description: Automated API Testing and Quality Assurance created: '2022-09-16T14:48:21Z' - updated: '2024-07-08T23:58:18Z' + updated: '2024-07-13T00:26:14Z' language: TypeScript archived: false stars: 1583 @@ -2501,8 +2501,8 @@ owner: stepci logo: https://avatars.githubusercontent.com/u/61350067?v=4 license: MPL-2.0 - repoEtag: '"42aa554d969e730f73b332b2fa30249728c397a148684c7aa989fa9167524394"' - repoLastModified: Mon, 08 Jul 2024 23:58:18 GMT + repoEtag: '"6b0bd37094ea806351101cf985269c471ccdeacea90002f93e3a07548481cdd5"' + repoLastModified: Sat, 13 Jul 2024 00:26:14 GMT foundInMaster: true - source: - https://openapi.tools/ @@ -2573,17 +2573,17 @@ baked in support for OpenAPI v3.1, v3.0, and v2.0 as well as AsyncAPI v2.x. created: '2018-08-15T18:43:18Z' - updated: '2024-07-12T01:20:00Z' + updated: '2024-07-12T14:54:16Z' language: TypeScript archived: false - stars: 2361 + stars: 2362 watchers: 33 forks: 227 owner: stoplightio logo: https://avatars.githubusercontent.com/u/10767217?v=4 license: Apache-2.0 - repoEtag: '"2d6dfa6072c690b4150f09491a1f1d44484a65e68e3564aa021559c365337c25"' - repoLastModified: Fri, 12 Jul 2024 01:20:00 GMT + repoEtag: '"a6e38182f51dd68086942ede3b8e7e5aeae1290fbd417040cd4d092e26cda919"' + repoLastModified: Fri, 12 Jul 2024 14:54:16 GMT foundInMaster: true id: fab3cc58898cd8953a30e43cc622e0fe - source: https://openapi.tools/ @@ -2668,17 +2668,17 @@ ⚒️ Redocly CLI makes OpenAPI easy. Lint/validate to any standard, generate beautiful docs, and more. created: '2019-09-10T14:56:25Z' - updated: '2024-07-11T11:13:53Z' + updated: '2024-07-12T13:55:27Z' language: TypeScript archived: false stars: 858 - watchers: 26 + watchers: 27 forks: 129 owner: Redocly logo: https://avatars.githubusercontent.com/u/32099856?v=4 license: MIT - repoEtag: '"7b6e3283b1ade2d6bb929e8b114b61130b2a86953526afb92f6848f2300c59a9"' - repoLastModified: Thu, 11 Jul 2024 11:13:53 GMT + repoEtag: '"c5ddf0ec263c6b030c7c9fc1efa9ea2238a46d437f24a82c2a70557eef79b4a1"' + repoLastModified: Fri, 12 Jul 2024 13:55:27 GMT category: - Description Validators - Documentation @@ -2757,17 +2757,17 @@ repositoryId: 14134534 description: A collection of Rack middleware to support JSON Schema. created: '2013-11-05T07:05:45Z' - updated: '2024-07-11T17:25:39Z' + updated: '2024-07-12T07:55:12Z' language: Ruby archived: false - stars: 862 + stars: 863 watchers: 16 forks: 131 owner: interagent logo: https://avatars.githubusercontent.com/u/7388387?v=4 license: MIT - repoEtag: '"252fc34d02e4f5f86b1656edb2d0cf5346484c1e0240fa3d3932ac2d6474735f"' - repoLastModified: Thu, 11 Jul 2024 17:25:39 GMT + repoEtag: '"f61a8c8bf5883ed1e025f647ce1c2ee006bfa51bc56f869d8600936d9fac18a0"' + repoLastModified: Fri, 12 Jul 2024 07:55:12 GMT foundInMaster: true id: 64f8f7a816e2d8825abd1a213d9e3fb5 - source: @@ -2892,17 +2892,17 @@ repositoryId: 25453221 description: Swagger 2.0 and OpenAPI 3.0 parser/validator created: '2014-10-20T06:14:51Z' - updated: '2024-06-27T12:12:58Z' + updated: '2024-07-12T15:57:14Z' language: JavaScript archived: false - stars: 1075 + stars: 1076 watchers: 18 - forks: 152 + forks: 153 owner: APIDevTools logo: https://avatars.githubusercontent.com/u/43750074?v=4 license: MIT - repoEtag: '"e275ceb6bec43e3e8ffa7661e7199c82ac905740433587eb4c453af72ff9ff0f"' - repoLastModified: Thu, 27 Jun 2024 12:12:58 GMT + repoEtag: '"f6ab9c39e06abc49469b88f16a86683936969c539040288ef41592d43e323d86"' + repoLastModified: Fri, 12 Jul 2024 15:57:14 GMT category: Parsers foundInMaster: true name: APIDevTools/swagger-parser @@ -2933,17 +2933,17 @@ repositoryId: 66855599 description: Generates code snippets for given Swagger / Open API documents created: '2016-08-29T15:24:00Z' - updated: '2024-06-07T08:19:36Z' + updated: '2024-07-12T11:12:55Z' language: JavaScript archived: false - stars: 114 + stars: 115 watchers: 6 forks: 64 owner: ErikWittern logo: https://avatars.githubusercontent.com/u/1745998?v=4 license: MIT - repoEtag: '"66edbb84f050267b5e4563f4731175f6a05281f15228f2bc9209cfef9de684b0"' - repoLastModified: Fri, 07 Jun 2024 08:19:36 GMT + repoEtag: '"8e489c6ce73d0db795d4f5dc7033c80ed8c1f5ca8c939f81d753e1e122f9faa4"' + repoLastModified: Fri, 12 Jul 2024 11:12:55 GMT foundInMaster: true id: fbf76c5bdaef3297eb35739ca2ca0954 - source: https://openapi.tools/ @@ -3143,17 +3143,17 @@ Read and write OpenAPI yaml/json files and make the content accessible in PHP objects. created: '2018-10-23T10:46:11Z' - updated: '2024-06-27T20:17:40Z' + updated: '2024-07-12T07:37:21Z' language: PHP archived: false - stars: 464 + stars: 465 watchers: 22 forks: 87 owner: cebe logo: https://avatars.githubusercontent.com/u/189796?v=4 license: MIT - repoEtag: '"b976462fd47ec0e93efd6545d1517f999bf540377ce3e25e04fd441d1aacc1ca"' - repoLastModified: Thu, 27 Jun 2024 20:17:40 GMT + repoEtag: '"ab957427dec01391744129d493ebd0759bf50e0bf593c6e7774cee4af5f7a1fe"' + repoLastModified: Fri, 12 Jul 2024 07:37:21 GMT foundInMaster: true v3_1_link: https://github.com/cebe/php-openapi/pull/128 id: 3a26d5049f03c42cb9771c179db0f35f @@ -3177,17 +3177,17 @@ An object oriented approach to generating OpenAPI specs, implemented in PHP. created: '2018-09-26T20:11:56Z' - updated: '2024-07-03T15:40:37Z' + updated: '2024-07-13T00:04:13Z' language: PHP archived: false - stars: 221 + stars: 222 watchers: 8 forks: 21 owner: goldspecdigital logo: https://avatars.githubusercontent.com/u/31162012?v=4 license: MIT - repoEtag: '"ff0547e4ed0df64081a1fd993341ee44b9293f544c4bfd3f038c0a4ccb7949b6"' - repoLastModified: Wed, 03 Jul 2024 15:40:37 GMT + repoEtag: '"962b41016de3b4db2839732cb9d313e6d6d9e7eed05974dfbde488244caaa285"' + repoLastModified: Sat, 13 Jul 2024 00:04:13 GMT foundInMaster: true id: b572581c8e045165d5121ee9c5bc361e - source: https://openapi.tools/ @@ -3235,17 +3235,17 @@ repositoryId: 55149439 description: Parse and generate API specification formats created: '2016-03-31T12:39:05Z' - updated: '2024-07-10T20:11:30Z' + updated: '2024-07-13T00:18:30Z' language: PHP archived: false stars: 35 - watchers: 3 + watchers: 4 forks: 9 owner: apioo logo: https://avatars.githubusercontent.com/u/18172950?v=4 license: Apache-2.0 - repoEtag: '"fc579efc870d111d7049dd4f02089e7cb3e224d2f985c47d68afa6804a27c83e"' - repoLastModified: Wed, 10 Jul 2024 20:11:30 GMT + repoEtag: '"a197e0bde9529e9c004c11a1a6a22a0d76b9758d336ce603d10cdfbf300778df"' + repoLastModified: Sat, 13 Jul 2024 00:18:30 GMT foundInMaster: true id: ee32e280cf10ca5103c9b9e144021b91 - source: https://openapi.tools/ @@ -3269,17 +3269,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-07-11T02:52:36Z' + updated: '2024-07-12T06:14:17Z' language: C# archived: false stars: 1358 watchers: 65 - forks: 226 + forks: 227 owner: microsoft logo: https://avatars.githubusercontent.com/u/6154722?v=4 license: MIT - repoEtag: '"4036b5ea8077fdc0a0c1b317c253d7d69e426f9726ca053ba1a1585e777f6efc"' - repoLastModified: Thu, 11 Jul 2024 02:52:36 GMT + repoEtag: '"acdc2c7982bb028ae41973130ff6c84c5afc0ab229ea4f8c5104160140f86537"' + repoLastModified: Fri, 12 Jul 2024 06:14:17 GMT foundInMaster: true id: 1066748bb5b1f114a70856a29fee4aa7 - source: @@ -3476,17 +3476,17 @@ repositoryId: 26726495 description: Swagger 2.0 implementation for go created: '2014-11-16T20:13:15Z' - updated: '2024-07-12T00:02:20Z' + updated: '2024-07-12T04:51:36Z' language: Go archived: false - stars: 9384 + stars: 9385 watchers: 120 forks: 1242 owner: go-swagger logo: https://avatars.githubusercontent.com/u/10362650?v=4 license: Apache-2.0 - repoEtag: '"d899ef7ffc6d6e006e86575e3574a9cf1ddfaf552f312dfe16473674227b046d"' - repoLastModified: Fri, 12 Jul 2024 00:02:20 GMT + repoEtag: '"381dad68665fea75e165c2a03a44f07aff2a66a6e6719cb069c3206c99cb8bac"' + repoLastModified: Fri, 12 Jul 2024 04:51:36 GMT foundInMaster: true id: ef136df9ffb40bb33ccbd76665d8f5b4 - source: https://openapi.tools/ @@ -3579,17 +3579,17 @@ repositoryId: 41822320 description: 'The Swagger/OpenAPI toolchain for .NET, ASP.NET Core and TypeScript. ' created: '2015-09-02T19:11:57Z' - updated: '2024-07-10T13:32:15Z' + updated: '2024-07-12T17:50:30Z' language: C# archived: false - stars: 6616 + stars: 6617 watchers: 163 - forks: 1224 + forks: 1225 owner: RicoSuter logo: https://avatars.githubusercontent.com/u/2603405?v=4 license: MIT - repoEtag: '"18283dc3608d82680b052ce76035d9a728d2dcd23480175cd2354bc81333215f"' - repoLastModified: Wed, 10 Jul 2024 13:32:15 GMT + repoEtag: '"a8ece4b6b2e29f05d403b45651ab715cab04a124bad49141a575e10375b8a0c5"' + repoLastModified: Fri, 12 Jul 2024 17:50:30 GMT foundInMaster: true id: 93636e95435e95198d7d15c9d507f0d3 - source: https://openapi.tools/ @@ -3652,17 +3652,17 @@ documentation, API clients and server stubs in different languages by parsing your OpenAPI / Swagger definition. created: '2011-07-06T14:26:48Z' - updated: '2024-07-11T16:12:17Z' + updated: '2024-07-13T02:14:41Z' language: Mustache archived: false - stars: 16747 + stars: 16751 watchers: 413 forks: 6019 owner: swagger-api logo: https://avatars.githubusercontent.com/u/7658037?v=4 license: Apache-2.0 - repoEtag: '"1de4f2c1ff333095e4fdeae66e28ae7427ef3acd9a5ec5a4ae29b06891bf1bb2"' - repoLastModified: Thu, 11 Jul 2024 16:12:17 GMT + repoEtag: '"aeefdd1171921bd16aa94eb3fd522ea90cc319e6347ca190eb3233e615d18d0e"' + repoLastModified: Sat, 13 Jul 2024 02:14:41 GMT foundInMaster: true id: eda1e66e1b7805496e42f57851791a32 - source: https://openapi.tools/ @@ -3686,17 +3686,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-07-11T05:38:36Z' + updated: '2024-07-12T20:39:50Z' language: TypeScript archived: false - stars: 4546 + stars: 4547 watchers: 867 forks: 728 owner: Azure logo: https://avatars.githubusercontent.com/u/6844498?v=4 license: MIT - repoEtag: '"fb40b0f60c9590af9a711cb812d8bbc4156e063ef493428bd48371e15f687ca1"' - repoLastModified: Thu, 11 Jul 2024 05:38:36 GMT + repoEtag: '"72b6d3c66600e79dcb2e6fb9f66190d9d28930433b6088a168c2f92f8222b13d"' + repoLastModified: Fri, 12 Jul 2024 20:39:50 GMT foundInMaster: true id: 648d92bca90bf58cd74407e0bcad2936 - source: https://openapi.tools/ @@ -3795,17 +3795,17 @@ repositoryId: 81140437 description: 🚀 Automatic SDK generation from an OpenAPI definition created: '2017-02-06T22:31:07Z' - updated: '2024-07-10T23:39:36Z' + updated: '2024-07-13T01:17:09Z' language: TypeScript archived: false - stars: 541 + stars: 542 watchers: 22 forks: 25 owner: readmeio logo: https://avatars.githubusercontent.com/u/6878153?v=4 license: MIT - repoEtag: '"fb339b931f59557fda51bfb4188ca11b20229c74e292406936576a43ff8472a9"' - repoLastModified: Wed, 10 Jul 2024 23:39:36 GMT + repoEtag: '"5c54e62af29274e4dc6fae060f68a1e0bbda743658659e3ccecea7c6c505ae98"' + repoLastModified: Sat, 13 Jul 2024 01:17:09 GMT foundInMaster: true - source: - https://openapi.tools/ @@ -4364,16 +4364,16 @@ repositoryId: 491304964 description: Automagically reverse-engineer REST APIs via capturing traffic created: '2022-05-11T23:48:49Z' - updated: '2024-07-12T01:38:49Z' + updated: '2024-07-12T21:31:47Z' language: HTML archived: false - stars: 4931 + stars: 4932 watchers: 21 forks: 209 owner: alufers logo: https://avatars.githubusercontent.com/u/5400940?v=4 - repoEtag: '"622f18ab6ff43b6a44031d10b8b3d5a807c9c69a76af4f4f4d3d3d8790a63fcd"' - repoLastModified: Fri, 12 Jul 2024 01:38:49 GMT + repoEtag: '"25e9ad871ac5b59a37b414b41342f839fb722b07e78b93f954c6ab373ad719aa"' + repoLastModified: Fri, 12 Jul 2024 21:31:47 GMT foundInMaster: true - source: https://openapi.tools/ name: OpenApiSpecGeneratorPlugin @@ -4399,17 +4399,17 @@ 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-07-11T09:03:06Z' + updated: '2024-07-12T23:04:22Z' language: C# archived: false - stars: 455 - watchers: 15 + stars: 457 + watchers: 16 forks: 53 owner: microsoft logo: https://avatars.githubusercontent.com/u/6154722?v=4 license: MIT - repoEtag: '"b8711d19a197c52360390468e5ce358f80d234fa78baf80b407841c04dac3c0f"' - repoLastModified: Thu, 11 Jul 2024 09:03:06 GMT + repoEtag: '"8ed002601f2f38d499858d124b8c51fb54ac59e2a9ad5419469e739969b0d0c1"' + repoLastModified: Fri, 12 Jul 2024 23:04:22 GMT foundInMaster: true - source: https://openapi.tools/ name: har2openapi @@ -4542,17 +4542,17 @@ repositoryId: 709571808 description: Browser extension that generates API specs for any app or website created: '2023-10-25T00:36:06Z' - updated: '2024-07-11T15:22:29Z' + updated: '2024-07-13T00:46:24Z' language: TypeScript archived: false - stars: 3852 + stars: 3853 watchers: 22 forks: 66 owner: AndrewWalsh logo: https://avatars.githubusercontent.com/u/15863952?v=4 license: MIT - repoEtag: '"48a74d0f96dbb0919328fd995aec83f682c46713138224ac319e2c3fcff4d0b5"' - repoLastModified: Thu, 11 Jul 2024 15:22:29 GMT + repoEtag: '"efcebde96b557486acdd2ca60b5c2bdc7e647187a74fd77a0afdd02a49237b93"' + repoLastModified: Sat, 13 Jul 2024 00:46:24 GMT category: - Auto Generators - Documentation @@ -4579,17 +4579,17 @@ repositoryId: 381857226 description: null created: '2021-06-30T23:29:49Z' - updated: '2024-07-12T02:52:29Z' + updated: '2024-07-12T21:38:39Z' language: TypeScript archived: false - stars: 3889 + stars: 3890 watchers: 31 forks: 175 owner: microsoft logo: https://avatars.githubusercontent.com/u/6154722?v=4 license: MIT - repoEtag: '"4638ba139026735a3ac01b7d3a6e25b0d7266dcb8dd19c66fbb7b741d76623f2"' - repoLastModified: Fri, 12 Jul 2024 02:52:29 GMT + repoEtag: '"6988b058a209e2e093689168cef5ebfb0379bbb463105a76401b90f8ab95c9d2"' + repoLastModified: Fri, 12 Jul 2024 21:38:39 GMT category: - Auto Generators - Server Implementations @@ -4666,17 +4666,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-07-12T03:25:44Z' + updated: '2024-07-12T12:37:37Z' language: Go archived: false - stars: 706 + stars: 707 watchers: 6 forks: 69 owner: danielgtaylor logo: https://avatars.githubusercontent.com/u/106826?v=4 license: MIT - repoEtag: '"9aecc438c9de347d66828272602524dfae73fdeb61c5bdd8aeb313b4d661a59c"' - repoLastModified: Fri, 12 Jul 2024 03:25:44 GMT + repoEtag: '"92b33d0753967f28e87ece360b484bf1318121296fc5d32b25e779e6f9f8593b"' + repoLastModified: Fri, 12 Jul 2024 12:37:37 GMT foundInMaster: true id: 22a8c610015b1b9d89af39221beabe66 v3_1: true @@ -4734,17 +4734,17 @@ Plugin for converting OpenAPI 3.0 specs to the Postman Collection (v2) format created: '2018-12-12T10:13:46Z' - updated: '2024-07-10T14:12:32Z' + updated: '2024-07-12T10:21:52Z' language: JavaScript archived: false - stars: 885 + stars: 886 watchers: 22 - forks: 190 + forks: 191 owner: postmanlabs logo: https://avatars.githubusercontent.com/u/10251060?v=4 license: Apache-2.0 - repoEtag: '"59c4320b51c9a72eaa8c31133cd5444a29ae16fd00e0a82ece62ceff30cbedce"' - repoLastModified: Wed, 10 Jul 2024 14:12:32 GMT + repoEtag: '"0d5a48c6607be10b9c2c47bd8c01b7ed6bc634378f501a19ed81805b78ecb531"' + repoLastModified: Fri, 12 Jul 2024 10:21:52 GMT foundInMaster: true id: 31b717a2084e3d92f6cda2c33484c789 v3_link: true @@ -4817,7 +4817,7 @@ owner: github logo: https://avatars.githubusercontent.com/u/9919?v=4 license: MIT - repoEtag: '"bf265876e74353ea562577573fb76d3f6b271bf391c08d8187ab7e52bac8f46f"' + repoEtag: '"e84985de37ba213385d2972995454c9239d49bc2c5c3f5940a8ec0a19af9257d"' repoLastModified: Tue, 18 Jun 2024 18:42:00 GMT foundInMaster: true id: ec6a7a1e4a69a9beeb95bdebb88cb36d @@ -4843,17 +4843,17 @@ repositoryId: 4238977 description: Automated JSON API documentation for API's built with Spring created: '2012-05-06T06:38:57Z' - updated: '2024-07-10T00:42:51Z' + updated: '2024-07-12T14:49:25Z' language: Java archived: false - stars: 5916 + stars: 5917 watchers: 268 forks: 1533 owner: springfox logo: https://avatars.githubusercontent.com/u/11529357?v=4 license: Apache-2.0 - repoEtag: '"9b2528f9b0788da8604a9a1e384ac2f816496f30f503e2bb9e61fe8e6db03672"' - repoLastModified: Wed, 10 Jul 2024 00:42:51 GMT + repoEtag: '"2164ae6a9500c91741756ea7f75075f05fd9c597a189c22839b3c4b4b9f78960"' + repoLastModified: Fri, 12 Jul 2024 14:49:25 GMT foundInMaster: true id: 2addde4c497bf582f20025ccac2cda86 - source: @@ -4911,17 +4911,17 @@ repositoryId: 36817565 description: The ZAP core project created: '2015-06-03T16:55:01Z' - updated: '2024-07-12T02:50:08Z' + updated: '2024-07-12T22:30:14Z' language: Java archived: false - stars: 12268 + stars: 12273 watchers: 396 forks: 2213 owner: zaproxy logo: https://avatars.githubusercontent.com/u/6716868?v=4 license: Apache-2.0 - repoEtag: '"b5a3e212e33f2ad28afb95e606137404c0f4fa6b8cfb53c27707a2d9e70f08a6"' - repoLastModified: Fri, 12 Jul 2024 02:50:08 GMT + repoEtag: '"45d8ba1cc04f470916758b7143936212e3a3961440f02805e0ba162d12a627c9"' + repoLastModified: Fri, 12 Jul 2024 22:30:14 GMT foundInMaster: true id: 9eedc1be44837a65f912bcf562844f39 - source: @@ -5078,17 +5078,17 @@ Validate your HttpFoundation requests and responses against OpenAPI (3+) definitions created: '2020-10-23T11:42:16Z' - updated: '2024-07-12T01:51:19Z' + updated: '2024-07-12T22:14:57Z' language: PHP archived: false - stars: 91 + stars: 92 watchers: 3 forks: 13 owner: osteel logo: https://avatars.githubusercontent.com/u/436467?v=4 license: MIT - repoEtag: '"b583feb95ee928feeaab62ae5803a3ae7554fff7385ac29af08dcc07e1f55564"' - repoLastModified: Fri, 12 Jul 2024 01:51:19 GMT + repoEtag: '"c0261d326ff3fde7102143be80aeb593a9eba8fc9dcd9b60ce0e85e6b8844d11"' + repoLastModified: Fri, 12 Jul 2024 22:14:57 GMT foundInMaster: true id: 940ce85dbc99fab7a0ea193ac4ade24c v3_1: true @@ -5255,17 +5255,17 @@ repositoryId: 1431547 description: Web APIs for Django. 🎸 created: '2011-03-02T17:13:56Z' - updated: '2024-07-11T15:59:32Z' + updated: '2024-07-12T21:58:50Z' language: Python archived: false - stars: 27866 - watchers: 621 - forks: 6768 + stars: 27869 + watchers: 622 + forks: 6766 owner: encode logo: https://avatars.githubusercontent.com/u/19159390?v=4 license: NOASSERTION - repoEtag: '"3e93efc8a1e71f59504880f3576d16ad629a9f72ef390547a4cab399ed9976ca"' - repoLastModified: Thu, 11 Jul 2024 15:59:32 GMT + repoEtag: '"3adb47b9355c5ce126ea1fef255c9117ee29787763bf0be28675ff3e4ac00dea"' + repoLastModified: Fri, 12 Jul 2024 21:58:50 GMT foundInMaster: true id: fb8994c078a380cc3510b024f6ed1202 category: Server Implementations @@ -5450,17 +5450,17 @@ repositoryId: 240776275 description: Generate modern Python clients from OpenAPI created: '2020-02-15T19:33:46Z' - updated: '2024-07-11T17:08:38Z' + updated: '2024-07-12T22:27:19Z' language: Python archived: false - stars: 1177 + stars: 1180 watchers: 13 forks: 187 owner: openapi-generators logo: https://avatars.githubusercontent.com/u/84925606?v=4 license: MIT - repoEtag: '"5d61cce02b3d4689c73efb068eb53cc87d43fca527b0d591db562c01799e48d7"' - repoLastModified: Thu, 11 Jul 2024 17:08:38 GMT + repoEtag: '"e30d65493d592cf210533053ef853d8ad743b07b9e4320513750757e5d565fd9"' + repoLastModified: Fri, 12 Jul 2024 22:27:19 GMT foundInMaster: true id: 784ec4adac4e47e4211ea74ef36dd5a5 v3_1: true @@ -5490,17 +5490,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-07-10T22:48:48Z' + updated: '2024-07-12T17:39:01Z' language: TypeScript archived: false - stars: 1614 + stars: 1616 watchers: 20 forks: 190 owner: stoplightio logo: https://avatars.githubusercontent.com/u/10767217?v=4 license: Apache-2.0 - repoEtag: '"562f60657fd9016401c95fc5e0dc66aba41b539451d9b905885caf8d19f4b011"' - repoLastModified: Wed, 10 Jul 2024 22:48:48 GMT + repoEtag: '"4c47457eb59d0c1a47ea28c127fb1e982754b8b6b55c9d229b8f72b27a0d132a"' + repoLastModified: Fri, 12 Jul 2024 17:39:01 GMT foundInMaster: true id: 2f94cc1fc980953b17a9979d4ff2e7ec - source: @@ -5814,17 +5814,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-07-12T00:51:44Z' + updated: '2024-07-13T01:19:26Z' language: TypeScript archived: false - stars: 2581 + stars: 2584 watchers: 12 - forks: 289 + forks: 290 owner: anymaniax logo: https://avatars.githubusercontent.com/u/10516382?v=4 license: MIT - repoEtag: '"2584af61a8db9331b1ad1f2c6c10ae18002f6f98fc1553adf5f164b61b64a78b"' - repoLastModified: Fri, 12 Jul 2024 00:51:44 GMT + repoEtag: '"a3990d595acb4baf66440b7dbd4312ec8878e7db461ed714929ae18935a0dc1a"' + repoLastModified: Sat, 13 Jul 2024 01:19:26 GMT foundInMaster: true - source: - https://openapi.tools/ @@ -5946,7 +5946,7 @@ repositoryId: 479515560 description: OpenAPI / Swagger to TypeScript generator and mock server created: '2022-04-08T19:32:15Z' - updated: '2024-07-12T01:05:47Z' + updated: '2024-07-12T04:46:07Z' language: TypeScript archived: false stars: 90 @@ -5955,8 +5955,8 @@ owner: pmcelhaney logo: https://avatars.githubusercontent.com/u/51504?v=4 license: MIT - repoEtag: '"c7d1403b275f8d12c05b5c5a05f5b49a0a86f5a19ec62223991cd5de1f1af0ed"' - repoLastModified: Fri, 12 Jul 2024 01:05:47 GMT + repoEtag: '"15f5656b74917f487a57919700ff60e7797838394f1417824650861e5fdb7a6f"' + repoLastModified: Fri, 12 Jul 2024 04:46:07 GMT category: - Mock - SDK @@ -6009,17 +6009,17 @@ you can think. vacuum is compatible with Spectral rulesets and generates compatible reports. created: '2021-10-10T18:24:19Z' - updated: '2024-07-11T19:58:21Z' + updated: '2024-07-13T02:40:05Z' language: Go archived: false - stars: 497 + stars: 501 watchers: 7 forks: 39 owner: daveshanley logo: https://avatars.githubusercontent.com/u/187345?v=4 license: MIT - repoEtag: '"2fabbc9af54f25df1da51cec1a30ebb54a82eddebcebea5146cabcf7704fc4ce"' - repoLastModified: Thu, 11 Jul 2024 19:58:21 GMT + repoEtag: '"8d806eac878f601192410f3457009ed41f005c40294b98337becdcb0debd8903"' + repoLastModified: Sat, 13 Jul 2024 02:40:05 GMT foundInMaster: true category: - Description Validators @@ -6104,7 +6104,7 @@ 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-07-10T13:57:57Z' + updated: '2024-07-12T22:13:21Z' language: Go archived: false stars: 383 @@ -6113,8 +6113,8 @@ owner: pb33f logo: https://avatars.githubusercontent.com/u/104016643?v=4 license: NOASSERTION - repoEtag: '"451d3c1a336176becb31d92425569f5971165a07cfa5fc85be16da0ca7e71bce"' - repoLastModified: Wed, 10 Jul 2024 13:57:57 GMT + repoEtag: '"1a57d86fdbc2ba9f4ece6a3283c39dbdb6d9916c60d1171dd5a236bfe367df67"' + repoLastModified: Fri, 12 Jul 2024 22:13:21 GMT category: Parsers foundInMaster: true name: libopenapi @@ -6233,7 +6233,7 @@ owner: abap-openapi logo: https://avatars.githubusercontent.com/u/77685491?v=4 license: MIT - repoEtag: '"9dc0308af4155f31a401bfe9ba9b813850dde577cf52ab8a77bc9789c275f311"' + repoEtag: '"6ffc69b93edefa855966156e66e1cf46aac04f0093cabae4bc4b8dd588b51b74"' repoLastModified: Tue, 11 Jun 2024 06:14:06 GMT foundInMaster: true - source: @@ -6292,7 +6292,7 @@ repositoryId: 506186592 description: null created: '2022-06-22T09:46:19Z' - updated: '2024-07-11T15:21:04Z' + updated: '2024-07-12T14:08:26Z' language: C# archived: false stars: 23 @@ -6301,8 +6301,8 @@ owner: criteo logo: https://avatars.githubusercontent.com/u/1713646?v=4 license: Apache-2.0 - repoEtag: '"392a80b4347e322c1ee59e86310ad1d6b692d00329add30db6342aef7c7ea333"' - repoLastModified: Thu, 11 Jul 2024 15:21:04 GMT + repoEtag: '"857e1780df8aeefad82f64196387a03952727b4e4b32218bbfb9ff9bf52d6242"' + repoLastModified: Fri, 12 Jul 2024 14:08:26 GMT foundInMaster: true category: Parsers - source: https://openapi.tools/ @@ -6418,7 +6418,7 @@ owner: znsio logo: https://avatars.githubusercontent.com/u/75619722?v=4 license: MIT - repoEtag: '"9eb402f162c6c4821dbbbd84fe387d90a9b51cd3749cce7429e8301c1bc43b05"' + repoEtag: '"599a1d52d5ee85388486c2999bd640f72d6b7eb49404f8d048185befe9444b72"' repoLastModified: Thu, 11 Jul 2024 13:22:11 GMT foundInMaster: true - source: @@ -6804,17 +6804,17 @@ repositoryId: 476820102 description: Input OpenAPI. Output SDKs and Docs. created: '2022-04-01T17:56:54Z' - updated: '2024-07-11T21:47:18Z' + updated: '2024-07-12T23:54:52Z' language: TypeScript archived: false - stars: 2459 - watchers: 17 + stars: 2461 + watchers: 19 forks: 119 owner: fern-api logo: https://avatars.githubusercontent.com/u/102944815?v=4 license: MIT - repoEtag: '"73fde395bd29ebf057d067e9759f6f4f7ac14c4b7ded250a6155ffdd1d09e362"' - repoLastModified: Thu, 11 Jul 2024 21:47:18 GMT + repoEtag: '"7f851371e110812bb29ed036268811a8e23921134b4c0b7c0a2b11c239f2242b"' + repoLastModified: Fri, 12 Jul 2024 23:54:52 GMT foundInMaster: true sponsored: true testimonial: > @@ -6917,17 +6917,17 @@ repositoryId: 630566794 description: Generate Swift client and server code from an OpenAPI document. created: '2023-04-20T16:50:53Z' - updated: '2024-07-12T03:09:10Z' + updated: '2024-07-12T07:19:53Z' language: Swift archived: false stars: 1299 watchers: 108 - forks: 94 + forks: 95 owner: apple logo: https://avatars.githubusercontent.com/u/10639145?v=4 license: Apache-2.0 - repoEtag: '"aa4b9396ed9299eeefddabc0e956d52ef625ded6583317812bc3bd5941581343"' - repoLastModified: Fri, 12 Jul 2024 03:09:10 GMT + repoEtag: '"df97199b96922e3defbe34dc211df038cfbb3f4bd590beb46e3d47c1aca61ceb"' + repoLastModified: Fri, 12 Jul 2024 07:19:53 GMT foundInMaster: true - source: - https://openapi.tools/ @@ -7155,17 +7155,17 @@ repositoryId: 706256859 description: Golang Fuego - web framework generating OpenAPI 3 spec from source code created: '2023-10-17T15:36:43Z' - updated: '2024-07-11T08:55:41Z' + updated: '2024-07-12T16:46:34Z' language: Go archived: false - stars: 637 + stars: 639 watchers: 5 forks: 32 owner: go-fuego logo: https://avatars.githubusercontent.com/u/148255240?v=4 license: MIT - repoEtag: '"99ad90fa39e2868ebe256a20d6e44213b4ca8d4ebcefdf6c852089a1b3241cba"' - repoLastModified: Thu, 11 Jul 2024 08:55:41 GMT + repoEtag: '"0ab95b9d040e2c819ad45a11cea0c69415106e37c411cd119da2cc9430e6ec86"' + repoLastModified: Fri, 12 Jul 2024 16:46:34 GMT foundInMaster: true - source: - https://openapi.tools/ @@ -7181,17 +7181,17 @@ repositoryId: 245763170 description: Huma REST/HTTP API Framework for Golang with OpenAPI 3.1 created: '2020-03-08T06:19:51Z' - updated: '2024-07-11T22:40:21Z' + updated: '2024-07-12T16:35:29Z' language: Go archived: false - stars: 1651 + stars: 1657 watchers: 28 forks: 129 owner: danielgtaylor logo: https://avatars.githubusercontent.com/u/106826?v=4 license: MIT - repoEtag: '"a35dc1e03c7cd8aea03f5734ae77690d59cf8ca716f572fa26bf31b1329de584"' - repoLastModified: Thu, 11 Jul 2024 22:40:21 GMT + repoEtag: '"fc53f81f05cbbfecaf6af31c0a2f6a5fd0b00843eb632985070e1059ac14a115"' + repoLastModified: Fri, 12 Jul 2024 16:35:29 GMT foundInMaster: true category: - Auto Generators @@ -7308,7 +7308,7 @@ owner: OpenAPI-Qraft logo: https://avatars.githubusercontent.com/u/159651230?v=4 license: MIT - repoEtag: '"adfd27cdd406ca289e8ae2ba33f4b9c90ac930da008cd7b2a403e1d8b0c1850d"' + repoEtag: '"7d9841835e54e24579f10f195e531cefc73a0fb7ee294d0a48fcdc2bf31f5a1e"' repoLastModified: Tue, 09 Jul 2024 05:43:34 GMT foundInMaster: true - source: https://openapi.tools/ @@ -7372,7 +7372,7 @@ owner: Mermade logo: https://avatars.githubusercontent.com/u/15950345?v=4 license: MIT - repoEtag: '"b1f401bbe0c2574255a8346eec7015b6fe815d16cebb36c6f4ad9e13ea32a789"' + repoEtag: '"00141e8bfd30742264e9c13892cc88d27dcc23ddb8ecdea2a03f6cef25fb64c9"' repoLastModified: Tue, 09 Jul 2024 04:03:38 GMT foundInMaster: true homepage: https://github.com/Mermade/widdershins @@ -7397,17 +7397,17 @@ FastAPI framework, high performance, easy to learn, fast to code, ready for production created: '2018-12-08T08:21:47Z' - updated: '2024-07-12T03:29:05Z' + updated: '2024-07-13T01:19:44Z' language: Python archived: false - stars: 73435 - watchers: 677 - forks: 6186 + stars: 73465 + watchers: 676 + forks: 6189 owner: tiangolo logo: https://avatars.githubusercontent.com/u/1326112?v=4 license: MIT - repoEtag: '"1112b94870bc60044baadaadda15740474a13710d2eed7a2a41246cd2a354a55"' - repoLastModified: Fri, 12 Jul 2024 03:29:05 GMT + repoEtag: '"5e58fa0649da91dcbdad4c509e2f47080ed7111060932d585a51562cd1551274"' + repoLastModified: Sat, 13 Jul 2024 01:19:44 GMT foundInMaster: true id: 8e11fa45d6f090aa2ed68317cf5a7215 - source: @@ -7425,17 +7425,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-07-12T03:19:48Z' + updated: '2024-07-13T01:30:22Z' language: JavaScript archived: false - stars: 26021 + stars: 26023 watchers: 647 forks: 8861 owner: swagger-api logo: https://avatars.githubusercontent.com/u/7658037?v=4 license: Apache-2.0 - repoEtag: '"4d8b727d95d3802a3410b9971a0c02635d2a7799078531814b86996ac00ed3d2"' - repoLastModified: Fri, 12 Jul 2024 03:19:48 GMT + repoEtag: '"8c9802ef1ab974f0ebb95f5ee5f3461a992c81d9bdef8fc45cc8a9cc0749a95e"' + repoLastModified: Sat, 13 Jul 2024 01:30:22 GMT foundInMaster: true name: swagger-ui homepage: https://github.com/swagger-api/swagger-UI @@ -7468,7 +7468,7 @@ repositoryId: 45250726 description: 📘 OpenAPI/Swagger-generated API Reference Documentation created: '2015-10-30T12:53:02Z' - updated: '2024-07-12T01:04:42Z' + updated: '2024-07-12T22:35:34Z' language: TypeScript archived: false stars: 22933 @@ -7477,8 +7477,8 @@ owner: Redocly logo: https://avatars.githubusercontent.com/u/32099856?v=4 license: MIT - repoEtag: '"4b9c48a1c06b66498c13e6dd99ce090c400c6569d3d90f5bfaae313a49b34140"' - repoLastModified: Fri, 12 Jul 2024 01:04:42 GMT + repoEtag: '"513d1eb42c96fef60e31c746ff908c567ab2b92d6b9a38722407bea5d8e7272e"' + repoLastModified: Fri, 12 Jul 2024 22:35:34 GMT foundInMaster: true v3_1: true id: 2725d6db6977c1dd12ceaf9701787e07 @@ -7524,17 +7524,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-07-11T17:20:36Z' + updated: '2024-07-13T00:37:24Z' language: TypeScript archived: false - stars: 6096 + stars: 6099 watchers: 61 - forks: 350 + forks: 353 owner: mockoon logo: https://avatars.githubusercontent.com/u/49429147?v=4 license: NOASSERTION - repoEtag: '"c3acdce9fd8de589a6ff7780c65a18fe9c2593e6e4a79828c6cb9cc43e3a8acc"' - repoLastModified: Thu, 11 Jul 2024 17:20:36 GMT + repoEtag: '"d9983fc8e6f833d8e656de380e9300615b06f964e184bffb8e3dc25f5cf6b41c"' + repoLastModified: Sat, 13 Jul 2024 00:37:24 GMT foundInMaster: true category: Testing id: 8728dfca2c1908dbecdcddd31597fad4 @@ -7557,17 +7557,17 @@ repositoryId: 173009358 description: Generate Go client and server boilerplate from OpenAPI 3 specifications created: '2019-02-27T23:59:59Z' - updated: '2024-07-12T03:11:30Z' + updated: '2024-07-12T21:50:05Z' language: Go archived: false - stars: 5618 - watchers: 36 + stars: 5625 + watchers: 37 forks: 817 owner: oapi-codegen logo: https://avatars.githubusercontent.com/u/142752710?v=4 license: Apache-2.0 - repoEtag: '"6e2e1153f216f35467c7c6f384b42e11d43be3e4cc38e63f3a322ef612b15d69"' - repoLastModified: Fri, 12 Jul 2024 03:11:30 GMT + repoEtag: '"2250375e3d14512257c8498879a63f3d9d377f0e2dfffcccccbcac70fa5cfcb8"' + repoLastModified: Fri, 12 Jul 2024 21:50:05 GMT foundInMaster: true id: 770a221110cc4ef0e399089f5caf8694 oldLocations: @@ -7596,17 +7596,17 @@ repositoryId: 161691324 description: Generate TypeScript types from OpenAPI 3 specs created: '2018-12-13T20:28:01Z' - updated: '2024-07-12T03:16:01Z' + updated: '2024-07-13T03:16:33Z' language: TypeScript archived: false - stars: 5072 + stars: 5083 watchers: 28 forks: 408 owner: openapi-ts logo: https://avatars.githubusercontent.com/u/172838200?v=4 license: MIT - repoEtag: '"d52b4a122899dd642c333644ed253900017f3eb71eb2c8a7af15eab5a6f44504"' - repoLastModified: Fri, 12 Jul 2024 03:16:01 GMT + repoEtag: '"09ae1b4cd98af27c86cfacc95e56710a7f45a201edb1a5079eb719c01533241a"' + repoLastModified: Sat, 13 Jul 2024 03:16:33 GMT foundInMaster: true oldLocations: - https://github.com/drwpow/openapi-typescript @@ -7682,17 +7682,17 @@ repositoryId: 196475719 description: Library for OpenAPI 3 with spring-boot created: '2019-07-11T23:08:20Z' - updated: '2024-07-11T07:07:56Z' + updated: '2024-07-12T21:22:41Z' language: Java archived: false - stars: 3178 + stars: 3179 watchers: 42 forks: 476 owner: springdoc logo: https://avatars.githubusercontent.com/u/52804136?v=4 license: Apache-2.0 - repoEtag: '"7604c8a54a6661a3ad3a0f0693a599046a7983cd78de48d6026b769494e5bba7"' - repoLastModified: Thu, 11 Jul 2024 07:07:56 GMT + repoEtag: '"140f2dd64fa5bd062dc857f9bf566130b89a393952e47f939b077eb8dd268a21"' + repoLastModified: Fri, 12 Jul 2024 21:22:41 GMT foundInMaster: true id: 901410cec129651fcf7374c79f824f27 - source: openapi3 tags @@ -7708,17 +7708,17 @@ Docker image with Uvicorn managed by Gunicorn for high-performance FastAPI web applications in Python with performance auto-tuning. created: '2019-01-04T17:33:29Z' - updated: '2024-07-11T21:56:46Z' + updated: '2024-07-12T23:59:00Z' language: Python archived: false - stars: 2618 + stars: 2622 watchers: 24 - forks: 329 + forks: 330 owner: tiangolo logo: https://avatars.githubusercontent.com/u/1326112?v=4 license: MIT - repoEtag: '"139f9e3a58791ccb2c1913cb5b9dc028743dc7a77ad0f211c323952039c34a70"' - repoLastModified: Thu, 11 Jul 2024 21:56:46 GMT + repoEtag: '"e4af25822a5b60ab23ed5b48ab6d300b9dd77e9f73179c1b91ce7b8bf8027c69"' + repoLastModified: Fri, 12 Jul 2024 23:59:00 GMT foundInMaster: true category: Server Implementations id: d0f3fc0bd35fcadacc8ed2c531780739 @@ -7746,7 +7746,7 @@ owner: swagger-api logo: https://avatars.githubusercontent.com/u/7658037?v=4 license: Apache-2.0 - repoEtag: '"6f6f6ccaf7d7e2cb4c6780a224012f05bc17d4743d7b585c42282dae96e8b72f"' + repoEtag: '"6e8220b926b02a5aff99a4183d831845c7af49b61eb381e726a08c1f0cf37924"' repoLastModified: Thu, 11 Jul 2024 23:40:45 GMT foundInMaster: true category: Code Generators @@ -7763,17 +7763,17 @@ repositoryId: 244234763 description: Sane and flexible OpenAPI 3 schema generation for Django REST framework. created: '2020-03-01T22:36:54Z' - updated: '2024-07-07T21:44:36Z' + updated: '2024-07-12T16:04:05Z' language: Python archived: false - stars: 2214 + stars: 2216 watchers: 11 forks: 249 owner: tfranzel logo: https://avatars.githubusercontent.com/u/13507857?v=4 license: BSD-3-Clause - repoEtag: '"10ab2bbff6ebb90b50509c4fc078de7b97b642a7b88e4ce03a8204bfbd2f3807"' - repoLastModified: Sun, 07 Jul 2024 21:44:36 GMT + repoEtag: '"659686e9057f98b5705ceda9cd21cf2c61b2614a79a083d5aa8bcc6ab988b7aa"' + repoLastModified: Fri, 12 Jul 2024 16:04:05 GMT foundInMaster: true category: Server Implementations id: 520f5c66c3e42a7b3fbface4f156c1dc @@ -7797,17 +7797,17 @@ repositoryId: 203157084 description: Supercharge your API testing, catch bugs, and ensure compliance created: '2019-08-19T11:13:01Z' - updated: '2024-07-12T01:31:08Z' + updated: '2024-07-12T22:57:00Z' language: Python archived: false - stars: 2177 - watchers: 19 + stars: 2179 + watchers: 20 forks: 150 owner: schemathesis logo: https://avatars.githubusercontent.com/u/70383271?v=4 license: MIT - repoEtag: '"2288e16bf34117b4ae7cdc2f7ef506763df44d8871d80a7304811a9ca83bb1c7"' - repoLastModified: Fri, 12 Jul 2024 01:31:08 GMT + repoEtag: '"4bd3b1edcf7982600e6f0a051d857e54a0736617c21e489e2cf9efad55682ac3"' + repoLastModified: Fri, 12 Jul 2024 22:57:00 GMT foundInMaster: true id: f4032fb371a703acffa691c0f1239d45 oldLocations: @@ -7854,17 +7854,17 @@ Simple, Fast, Code first and Compile time generated OpenAPI documentation for Rust created: '2021-09-30T22:00:31Z' - updated: '2024-07-11T17:59:00Z' + updated: '2024-07-12T20:17:19Z' language: Rust archived: false - stars: 2033 + stars: 2034 watchers: 8 - forks: 160 + forks: 162 owner: juhaku logo: https://avatars.githubusercontent.com/u/26358664?v=4 license: Apache-2.0 - repoEtag: '"a1e3f27b9f4eba75e80cf65dbdd19c67e1a5fc25ecde66c5adf570fec5ee0ba1"' - repoLastModified: Thu, 11 Jul 2024 17:59:00 GMT + repoEtag: '"bb9d9f4edc1c4d04be330884f54843ec03c51449edcb8b66ce9147d2f4f809dc"' + repoLastModified: Fri, 12 Jul 2024 20:17:19 GMT foundInMaster: true category: Parsers id: 14269a89115b3be71493769fca4d995e @@ -7882,17 +7882,17 @@ A fast serialization and validation library, with builtin support for JSON, MessagePack, YAML, and TOML created: '2021-01-26T02:53:57Z' - updated: '2024-07-11T21:11:38Z' + updated: '2024-07-12T15:24:54Z' language: Python archived: false - stars: 2087 + stars: 2090 watchers: 19 - forks: 60 + forks: 61 owner: jcrist logo: https://avatars.githubusercontent.com/u/2783717?v=4 license: BSD-3-Clause - repoEtag: '"9c7784dff3e585023cfab83fe3d48a495dcd2b41dcfc98dcbf4371d4e35f5b6d"' - repoLastModified: Thu, 11 Jul 2024 21:11:38 GMT + repoEtag: '"94eff273044c49ab83771b7c6b8a695457e7d0a42cb8197ccb877f1448dfcd0b"' + repoLastModified: Fri, 12 Jul 2024 15:24:54 GMT category: Server Implementations foundInMaster: true - source: openapi3 tags @@ -7942,17 +7942,17 @@ repositoryId: 71986592 description: GUI / visual editor for creating and editing OpenAPI / Swagger definitions created: '2016-10-26T09:15:55Z' - updated: '2024-07-09T15:09:22Z' + updated: '2024-07-12T18:42:28Z' language: JavaScript archived: false - stars: 1389 + stars: 1390 watchers: 43 forks: 169 owner: Mermade logo: https://avatars.githubusercontent.com/u/15950345?v=4 license: MIT - repoEtag: '"b53fd561cbedd138dad605f79f5ce0a4c22a25128033c3ebf93213bd2494c832"' - repoLastModified: Tue, 09 Jul 2024 15:09:22 GMT + repoEtag: '"9e7be39a36a88dbd689550c51a2a000f51620724be4e5803855dbd231a9858f7"' + repoLastModified: Fri, 12 Jul 2024 18:42:28 GMT foundInMaster: true id: 71f1a528dc0a6366fb580d1b8c703ea8 - source: openapi3 tags @@ -7968,17 +7968,17 @@ A node package wrapper for https://github.com/OpenAPITools/openapi-generator created: '2018-10-26T10:21:23Z' - updated: '2024-07-11T11:01:11Z' + updated: '2024-07-12T10:49:17Z' language: TypeScript archived: false - stars: 1344 + stars: 1345 watchers: 18 forks: 137 owner: OpenAPITools logo: https://avatars.githubusercontent.com/u/37325267?v=4 license: Apache-2.0 - repoEtag: '"7a958ce885bb46c7b4b2a99fec52eb5f959991a732412b250bbb75e673082698"' - repoLastModified: Thu, 11 Jul 2024 11:01:11 GMT + repoEtag: '"41b781305328ab66c55da098ce0aa1fda85e7bc713b4dc68b2ffd93dc9458434"' + repoLastModified: Fri, 12 Jul 2024 10:49:17 GMT foundInMaster: true category: - Code Generators @@ -7996,17 +7996,17 @@ repositoryId: 372032505 description: OpenAPI v3 code generator for go created: '2021-05-29T17:25:48Z' - updated: '2024-07-10T13:13:33Z' + updated: '2024-07-12T12:04:39Z' language: Go archived: false - stars: 1195 + stars: 1198 watchers: 16 forks: 71 owner: ogen-go logo: https://avatars.githubusercontent.com/u/85122432?v=4 license: Apache-2.0 - repoEtag: '"e3fd1b6744c87943d0c4a7ccc67438b3f14cfc17fca1730319d93d6f022b0495"' - repoLastModified: Wed, 10 Jul 2024 13:13:33 GMT + repoEtag: '"c0676417fe79923f32b9c02b71faeb5ada344782d8216462d7056473e1ec0c1a"' + repoLastModified: Fri, 12 Jul 2024 12:04:39 GMT category: Parsers foundInMaster: true - source: openapi3 tags @@ -8022,17 +8022,17 @@ A pluggable API specification generator. Currently supports the OpenAPI Specification (f.k.a. the Swagger specification).. created: '2014-10-18T23:48:49Z' - updated: '2024-07-10T14:55:52Z' + updated: '2024-07-12T14:20:33Z' language: Python archived: false - stars: 1153 + stars: 1155 watchers: 24 forks: 172 owner: marshmallow-code logo: https://avatars.githubusercontent.com/u/10334301?v=4 license: MIT - repoEtag: '"10ace6d4702861fb3c798736fe53293c500dedc002b51043b10e12be7019ea0a"' - repoLastModified: Wed, 10 Jul 2024 14:55:52 GMT + repoEtag: '"ff06d824c4209a1ed24ae0a3de34dd36a7abeee7eb2e3b89fd74034669c57dd3"' + repoLastModified: Fri, 12 Jul 2024 14:20:33 GMT foundInMaster: true category: Parsers id: c1528764f05dd585ca47886dd6dabb86 @@ -8048,17 +8048,17 @@ repositoryId: 329190167 description: A lightweight Python web API framework. created: '2021-01-13T04:08:48Z' - updated: '2024-07-12T02:36:33Z' + updated: '2024-07-13T00:01:54Z' language: Python archived: false - stars: 987 + stars: 988 watchers: 21 forks: 115 owner: apiflask logo: https://avatars.githubusercontent.com/u/78075725?v=4 license: MIT - repoEtag: '"d032bb5599282da73959a3e0458a72e7db52d4b4b71007e546775a3732e0d4d9"' - repoLastModified: Fri, 12 Jul 2024 02:36:33 GMT + repoEtag: '"7ff85890e1dbdeb55318285af8599c6d7d50e92672d21819322da78938914969"' + repoLastModified: Sat, 13 Jul 2024 00:01:54 GMT category: Server Implementations foundInMaster: true oldLocations: @@ -8081,11 +8081,11 @@ archived: false stars: 803 watchers: 43 - forks: 320 + forks: 321 owner: networknt logo: https://avatars.githubusercontent.com/u/8740739?v=4 license: Apache-2.0 - repoEtag: '"bb5d4709d1f8587878f89e19b45cfd9ffb46ab022606fb2205d208c7d8537293"' + repoEtag: '"e13636a59b5a33a1ca5d6406cb371395d47b3d6df73b3d3ebe3e500013ec6974"' repoLastModified: Wed, 10 Jul 2024 07:34:52 GMT foundInMaster: true category: Parsers @@ -8102,17 +8102,17 @@ repositoryId: 481579846 description: A library that generates OpenAPI (Swagger) docs from Zod schemas created: '2022-04-14T11:32:57Z' - updated: '2024-07-11T19:03:10Z' + updated: '2024-07-13T02:24:52Z' language: TypeScript archived: false - stars: 801 + stars: 803 watchers: 10 forks: 52 owner: asteasolutions logo: https://avatars.githubusercontent.com/u/5244095?v=4 license: MIT - repoEtag: '"d30dd0e291d0b9584515a6eef1b13290a46bec860694d2cbaa4adb4b2edb5aa4"' - repoLastModified: Thu, 11 Jul 2024 19:03:10 GMT + repoEtag: '"84f897126649ac3fe8ba0e64178475f9234bc281547c6efbc39a9a1d0ae1e88c"' + repoLastModified: Sat, 13 Jul 2024 02:24:52 GMT category: Parsers foundInMaster: true - source: openapi3 tags @@ -8223,17 +8223,17 @@ Lightweight, blazing fast, cross-platform OpenAPI 3 mock server with validation created: '2018-07-24T05:29:01Z' - updated: '2024-07-11T16:29:16Z' + updated: '2024-07-12T17:20:31Z' language: Go archived: false - stars: 688 + stars: 689 watchers: 13 forks: 74 owner: danielgtaylor logo: https://avatars.githubusercontent.com/u/106826?v=4 license: MIT - repoEtag: '"48085fe8a3f4f272fd03269e0cf32553ac6030a499caa095b13cd5d834b5f1fc"' - repoLastModified: Thu, 11 Jul 2024 16:29:16 GMT + repoEtag: '"4b7fbca3c92c427b08e73bc2c15221e02b38761ce134a411c1d04da48f66d302"' + repoLastModified: Fri, 12 Jul 2024 17:20:31 GMT foundInMaster: true id: 1ceeb35cbfe549bf7ed38d6e576301db - source: @@ -8282,17 +8282,17 @@ repositoryId: 741524414 description: ✨ Turn your OpenAPI specification into a beautiful TypeScript client created: '2024-01-10T15:19:25Z' - updated: '2024-07-11T23:04:56Z' + updated: '2024-07-13T01:19:55Z' language: TypeScript archived: false - stars: 692 + stars: 696 watchers: 5 forks: 53 owner: hey-api logo: https://avatars.githubusercontent.com/u/164436240?v=4 license: MIT - repoEtag: '"d9d55d4062d14d15a4b53bf2b5c447d86c3411b7be4f02921e7f448e94ac3a21"' - repoLastModified: Thu, 11 Jul 2024 23:04:56 GMT + repoEtag: '"bf2b1b73cacdb1db61735d8d2e05ed02a5be286f86995cb53356a4f6ddb89231"' + repoLastModified: Sat, 13 Jul 2024 01:19:55 GMT category: SDK foundInMaster: true - source: @@ -8392,17 +8392,17 @@ repositoryId: 766082951 description: Terminal UI to list, browse and run APIs defined with openapi spec. created: '2024-03-02T09:42:10Z' - updated: '2024-07-11T23:18:56Z' + updated: '2024-07-12T05:41:57Z' language: Rust archived: false - stars: 587 + stars: 588 watchers: 4 forks: 15 owner: zaghaghi logo: https://avatars.githubusercontent.com/u/111259?v=4 license: MIT - repoEtag: '"ad1a88022307317bf506bb58333059eefad02f76cd2b644b6f4e595f8c105c8b"' - repoLastModified: Thu, 11 Jul 2024 23:18:56 GMT + repoEtag: '"f50e54d7d358a40aaaa062369a49124a741e29dc4ee4d841c54da5560bf016ef"' + repoLastModified: Fri, 12 Jul 2024 05:41:57 GMT category: Parsers foundInMaster: true - source: openapi3 tags @@ -8443,17 +8443,17 @@ repositoryId: 273958287 description: 🦕 OpenAPI plugin for generating API reference docs in Docusaurus v2. created: '2020-06-21T18:06:52Z' - updated: '2024-07-11T05:02:03Z' + updated: '2024-07-12T08:13:18Z' language: TypeScript archived: false - stars: 487 + stars: 486 watchers: 9 forks: 80 owner: cloud-annotations logo: https://avatars.githubusercontent.com/u/47490031?v=4 license: MIT - repoEtag: '"f8b3dcd414eb6c171a5da3595575f0360d73621a43b2b092a1a996a8b33acb6b"' - repoLastModified: Thu, 11 Jul 2024 05:02:03 GMT + repoEtag: '"fbdc48db21199628f910ba17c517842d1e8ea2c67438febf57822f85ffa3a17f"' + repoLastModified: Fri, 12 Jul 2024 08:13:18 GMT foundInMaster: true category: SDK id: 5acf9bbe5338a800925f2b0e23eca0a1 @@ -8496,16 +8496,16 @@ repositoryId: 182983428 description: Generate TypeScript clients to tap into OpenAPI servers created: '2019-04-23T09:40:41Z' - updated: '2024-07-11T11:20:03Z' + updated: '2024-07-12T10:29:15Z' language: TypeScript archived: false - stars: 479 + stars: 480 watchers: 7 forks: 77 owner: oazapfts logo: https://avatars.githubusercontent.com/u/119607625?v=4 - repoEtag: '"b597df10c8551155c37287a42f34720345a397d7da4bd7db196cf472ba323a06"' - repoLastModified: Thu, 11 Jul 2024 11:20:03 GMT + repoEtag: '"aa69b01932505ea058d75c4f020771e885055fae03d7fb16aff1ada72f67d47d"' + repoLastModified: Fri, 12 Jul 2024 10:29:15 GMT category: Parsers foundInMaster: true oldLocations: @@ -8548,17 +8548,17 @@ Query, provision and operate Cloud and SaaS resources and APIs using an extensible SQL based framework created: '2022-01-03T08:20:06Z' - updated: '2024-07-09T13:48:55Z' + updated: '2024-07-12T08:51:41Z' language: Go archived: false stars: 465 - watchers: 10 + watchers: 12 forks: 44 owner: stackql logo: https://avatars.githubusercontent.com/u/95105302?v=4 license: MIT - repoEtag: '"9efeb1f88a91dc9c7c4316d84562ebe9fa6caf27bb1d131be28c4015ae852225"' - repoLastModified: Tue, 09 Jul 2024 13:48:55 GMT + repoEtag: '"6c5f157a77c87c5661bb38b60dad41413f41a0069f9311f2eecdfdb69edc19f4"' + repoLastModified: Fri, 12 Jul 2024 08:51:41 GMT category: Server Implementations foundInMaster: true - source: openapi3 tags @@ -8769,7 +8769,7 @@ owner: dgarcia360 logo: https://avatars.githubusercontent.com/u/9107969?v=4 license: NOASSERTION - repoEtag: '"ac978f14874922f951e9ce054d000dd98fc8e1d77d201a965c5f7baf6c71c4c3"' + repoEtag: '"63278161e5b25c4f3a2b88320e050f5c04e5f8694c67bd4a26247fff02cb34d9"' repoLastModified: Thu, 04 Jul 2024 21:23:37 GMT foundInMaster: true category: @@ -8878,17 +8878,17 @@ repositoryId: 306110879 description: Web services with OpenAPI and JSON Schema done quick in Go created: '2020-10-21T18:16:16Z' - updated: '2024-07-07T07:09:48Z' + updated: '2024-07-12T09:58:44Z' language: Go archived: false stars: 334 - watchers: 4 + watchers: 5 forks: 17 owner: swaggest logo: https://avatars.githubusercontent.com/u/19609628?v=4 license: MIT - repoEtag: '"676f5749523fb95d4e9a80f8546c00f87b0617808de3a0d08880b0c54dac6a56"' - repoLastModified: Sun, 07 Jul 2024 07:09:48 GMT + repoEtag: '"207f8281ffbe80ded60077ad7ba6eec7377b4f2aadbea2e399f7b6656eeed406"' + repoLastModified: Fri, 12 Jul 2024 09:58:44 GMT foundInMaster: true id: ecd2fef7bb4079bda209503f9fb9820b - source: openapi3 tags @@ -9111,11 +9111,11 @@ archived: false stars: 284 watchers: 6 - forks: 165 + forks: 166 owner: asyncapi logo: https://avatars.githubusercontent.com/u/16401334?v=4 license: Apache-2.0 - repoEtag: '"42170e3fba403a11f3b8125830e98fb33ee61411da1f94aef4931a2b03d31b3a"' + repoEtag: '"db91e5f1e47963ce6d35edda5a60c929227032d9e62d5068d25538db32a26ebf"' repoLastModified: Wed, 10 Jul 2024 09:42:51 GMT foundInMaster: true - source: openapi3 tags @@ -9132,17 +9132,17 @@ OpenAPI 3 and 3.1 schema generator and validator for Hono, itty-router and more! created: '2022-11-08T11:43:41Z' - updated: '2024-07-09T05:11:15Z' + updated: '2024-07-12T21:27:53Z' language: TypeScript archived: false - stars: 263 + stars: 264 watchers: 11 - forks: 35 + forks: 36 owner: cloudflare logo: https://avatars.githubusercontent.com/u/314135?v=4 license: MIT - repoEtag: '"39a56db811daf64a2b2de19bc6b46df40a633246258acb2a1c4e59963c85e590"' - repoLastModified: Tue, 09 Jul 2024 05:11:15 GMT + repoEtag: '"0ae96989af94e87c2c56ed346915094812311d99abeb4af23d75aec7c7ef8d21"' + repoLastModified: Fri, 12 Jul 2024 21:27:53 GMT category: Server Implementations foundInMaster: true oldLocations: @@ -9170,7 +9170,7 @@ owner: dymmond logo: https://avatars.githubusercontent.com/u/65982469?v=4 license: MIT - repoEtag: '"2e433a1140df14f8eb51bddecdf9b70ec8572faa3bf098a60126e5c7239a9a77"' + repoEtag: '"1489a581c3f9b419ee9e35ffd446dfec9f04bbdcc3de7ef996fc8e1b49e90186"' repoLastModified: Fri, 12 Jul 2024 00:22:03 GMT category: Server Implementations foundInMaster: true @@ -9404,17 +9404,17 @@ repositoryId: 628179878 description: Use Zod Schemas to create OpenAPI v3.x documentation created: '2023-04-15T06:28:51Z' - updated: '2024-07-09T13:12:31Z' + updated: '2024-07-12T17:11:07Z' language: TypeScript archived: false - stars: 219 + stars: 221 watchers: 2 forks: 11 owner: samchungy logo: https://avatars.githubusercontent.com/u/18017094?v=4 license: MIT - repoEtag: '"b1857d7098aac53842f06b79d0736950a20b9c60ad9aebb09f70ef320870c97c"' - repoLastModified: Tue, 09 Jul 2024 13:12:31 GMT + repoEtag: '"79b1a04e59aaa8cc5e2eaf8e0da60f4da4984497b4568f94050dedaff2ee737a"' + repoLastModified: Fri, 12 Jul 2024 17:11:07 GMT category: Parsers foundInMaster: true - source: openapi3 tags @@ -9753,23 +9753,23 @@ v3: true repositoryMetadata: base64Readme: >- - PiAjIPCfk6ZUaGlzIHJlcG9zaXRvcnkgaGFzIGJlZW4gYXJjaGl2ZWQuIFlvdSB3aWxsIGZpbmQgTW9ja29vbidzIG5ldyBtb25vcmVwbyBbaGVyZV0oaHR0cHM6Ly9naXRodWIuY29tL21vY2tvb24vbW9ja29vbikuCgo8ZGl2IGFsaWduPSJjZW50ZXIiPgogIDxhIGhyZWY9Imh0dHBzOi8vbW9ja29vbi5jb20iIGFsdD0ibW9ja29vbiBsb2dvIj4KICAgIDxpbWcgd2lkdGg9IjIwMCIgaGVpZ2h0PSIyMDAiIHNyYz0iaHR0cHM6Ly9tb2Nrb29uLmNvbS9pbWFnZXMvbG9nby1zcXVhcmUtY2xpLnBuZyI+CiAgPC9hPgogIDxicj4KICA8YSBocmVmPSJodHRwczovL21vY2tvb24uY29tL2Rvd25sb2FkLyI+PGltZyBzcmM9Imh0dHBzOi8vaW1nLnNoaWVsZHMuaW8vYmFkZ2UvRG93bmxvYWQlMjBhcHAtR28tZ3JlZW4uc3ZnP3N0eWxlPWZsYXQtc3F1YXJlJmNvbG9yQj0xOTk3YzYiLz48L2E+CiAgPGEgaHJlZj0iaHR0cHM6Ly9tb2Nrb29uLmNvbS8iPjxpbWcgc3JjPSJodHRwczovL2ltZy5zaGllbGRzLmlvL2JhZGdlL1dlYnNpdGUtR28tZ3JlZW4uc3ZnP3N0eWxlPWZsYXQtc3F1YXJlJmNvbG9yQj0xOTk3YzYiLz48L2E+CiAgPGEgaHJlZj0iaHR0cDovL2VlcHVybC5jb20vZHNrQjJYIj48aW1nIHNyYz0iaHR0cHM6Ly9pbWcuc2hpZWxkcy5pby9iYWRnZS9OZXdzbGV0dGVyLVN1YnNjcmliZS1ncmVlbi5zdmc/c3R5bGU9ZmxhdC1zcXVhcmUiLz48L2E+CiAgPGEgaHJlZj0iaHR0cHM6Ly90d2l0dGVyLmNvbS9HZXRNb2Nrb29uIj48aW1nIHNyYz0iaHR0cHM6Ly9pbWcuc2hpZWxkcy5pby9iYWRnZS9Ud2l0dGVyX0BHZXRNb2Nrb29uLWZvbGxvdy1ibHVlLnN2Zz9zdHlsZT1mbGF0LXNxdWFyZSZjb2xvckI9MWRhMWYyIi8+PC9hPgogIDxhIGhyZWY9Imh0dHBzOi8vZGlzY29yZC5nZy9NdXRScHNZNWdFIj48aW1nIHNyYz0iaHR0cHM6Ly9pbWcuc2hpZWxkcy5pby9iYWRnZS9EaXNjb3JkLWdvLWJsdWUuc3ZnP3N0eWxlPWZsYXQtc3F1YXJlJmNvbG9yQT02Yzg0ZDkmY29sb3JCPTFkYTFmMiIvPjwvYT4KICA8YnI+CiAgPGEgaHJlZj0iaHR0cHM6Ly93d3cubnBtanMuY29tL3BhY2thZ2UvQG1vY2tvb24vY2xpIj48aW1nIHNyYz0iaHR0cHM6Ly9pbWcuc2hpZWxkcy5pby9ucG0vdi9AbW9ja29vbi9jbGkuc3ZnP3N0eWxlPWZsYXQtc3F1YXJlJmNvbG9yQj1jYjM4MzciLz48L2E+CiAgPGJyPgogIDxicj4KICA8aDE+QE1vY2tvb24vY2xpPC9oMT4KPC9kaXY+CgpXZWxjb21lIHRvIE1vY2tvb24ncyBvZmZpY2lhbCBDTEksIGEgbGlnaHR3ZWlnaHQgYW5kIGZhc3QgTlBNIHBhY2thZ2UgdG8gZGVwbG95IHlvdXIgbW9jayBBUElzIGFueXdoZXJlLgpGZWVkIGl0IHdpdGggYSBNb2Nrb29uJ3MgW2RhdGEgZmlsZV0oaHR0cHM6Ly9tb2Nrb29uLmNvbS9kb2NzL2xhdGVzdC9tb2Nrb29uLWRhdGEtZmlsZXMvZGF0YS1zdG9yYWdlLWxvY2F0aW9uLyksIG9yIE9wZW5BUEkgc3BlY2lmaWNhdGlvbiBmaWxlIChKU09OIG9yIFlBTUwpLCBhbmQgeW91IGFyZSBnb29kIHRvIGdvLgoKVGhlIENMSSBzdXBwb3J0cyB0aGUgc2FtZSBmZWF0dXJlcyBhcyB0aGUgbWFpbiBhcHBsaWNhdGlvbjogW3RlbXBsYXRpbmcgc3lzdGVtXShodHRwczovL21vY2tvb24uY29tL2RvY3MvbGF0ZXN0L3RlbXBsYXRpbmcvb3ZlcnZpZXcvKSwgW3Byb3h5IG1vZGVdKGh0dHBzOi8vbW9ja29vbi5jb20vZG9jcy9sYXRlc3QvcHJveHktbW9kZS8pLCBbcm91dGUgcmVzcG9uc2UgcnVsZXNdKGh0dHBzOi8vbW9ja29vbi5jb20vZG9jcy9sYXRlc3Qvcm91dGUtcmVzcG9uc2VzL2R5bmFtaWMtcnVsZXMvKSwgZXRjLgoKIVtNb2Nrb29uIENMSSBzY3JlZW5zaG90XSguL2RvY3Mvc2NyZWVuc2hvdC5wbmcpCgotIFtJbnN0YWxsYXRpb25dKCNpbnN0YWxsYXRpb24pCi0gW1J1biBhIG1vY2sgQVBJIHdpdGggdGhlIENMSV0oI3J1bi1hLW1vY2stYXBpLXdpdGgtdGhlLWNsaSkKICAtIFtVc2UgeW91ciBNb2Nrb29uIGVudmlyb25tZW50IGZpbGVdKCN1c2UteW91ci1tb2Nrb29uLWVudmlyb25tZW50LWZpbGUpCiAgLSBbVXNlIGFuIE9wZW5BUEkgc3BlY2lmaWNhdGlvbiBmaWxlXSgjdXNlLWFuLW9wZW5hcGktc3BlY2lmaWNhdGlvbi1maWxlKQotIFtDb21wYXRpYmlsaXR5XSgjY29tcGF0aWJpbGl0eSkKLSBbQ29tbWFuZHNdKCNjb21tYW5kcykKICAtIFtgbW9ja29vbi1jbGkgc3RhcnRgXSgjbW9ja29vbi1jbGktc3RhcnQpCiAgLSBbYG1vY2tvb24tY2xpIGxpc3QgW0lEXWBdKCNtb2Nrb29uLWNsaS1saXN0LWlkKQogIC0gW2Btb2Nrb29uLWNsaSBzdG9wIFtJRF1gXSgjbW9ja29vbi1jbGktc3RvcC1pZCkKICAtIFtgbW9ja29vbi1jbGkgZG9ja2VyaXplYF0oI21vY2tvb24tY2xpLWRvY2tlcml6ZSkKICAtIFtgbW9ja29vbi1jbGkgaGVscCBbQ09NTUFORF1gXSgjbW9ja29vbi1jbGktaGVscC1jb21tYW5kKQotIFtEb2NrZXJdKCNkb2NrZXIpCiAgLSBbVXNpbmcgdGhlIGdlbmVyaWMgRG9ja2VyIGltYWdlXSgjdXNpbmctdGhlLWdlbmVyaWMtZG9ja2VyLWltYWdlKQogIC0gW1VzaW5nIHRoZSBgZG9ja2VyaXplYCBjb21tYW5kXSgjdXNpbmctdGhlLWRvY2tlcml6ZS1jb21tYW5kKQotIFtMb2dzXSgjbG9ncykKLSBbUE0yXSgjcG0yKQotIFtNb2Nrb29uJ3MgZG9jdW1lbnRhdGlvbl0oI21vY2tvb25zLWRvY3VtZW50YXRpb24pCi0gW1Nwb25zb3JzXSgjc3BvbnNvcnMpCi0gW1N1cHBvcnQvZmVlZGJhY2tdKCNzdXBwb3J0ZmVlZGJhY2spCi0gW0NvbnRyaWJ1dGluZ10oI2NvbnRyaWJ1dGluZykKLSBbUm9hZG1hcF0oI3JvYWRtYXApCgojIyBJbnN0YWxsYXRpb24KCmBgYHNoLXNlc3Npb24KJCBucG0gaW5zdGFsbCAtZyBAbW9ja29vbi9jbGkKYGBgCgpVc2FnZToKCmBgYHNoLXNlc3Npb24KJCBtb2Nrb29uLWNsaSBDT01NQU5ECmBgYAoKIyMgUnVuIGEgbW9jayBBUEkgd2l0aCB0aGUgQ0xJCgojIyMgVXNlIHlvdXIgTW9ja29vbiBlbnZpcm9ubWVudCBmaWxlCgpUaGUgQ0xJIGNhbiBpbXBvcnQgYW5kIG1pZ3JhdGUgZGF0YSBmcm9tIG9sZGVyIHZlcnNpb25zIG9mIE1vY2tvb24uIEhvd2V2ZXIsIGl0IGRvZXNuJ3QgYWx0ZXIgdGhlIGZpbGUgeW91IHByb3ZpZGUgYW5kIG9ubHkgbWlncmF0ZXMgYSBjb3B5LiBJZiB5b3UgY3JlYXRlZCB5b3VyIG1vY2sgd2l0aCBhIG1vcmUgcmVjZW50IHZlcnNpb24gb2YgdGhlIGFwcGxpY2F0aW9uLCB5b3UgbmVlZCB0byB1cGRhdGUgeW91ciBDTEkgd2l0aCB0aGUgZm9sbG93aW5nIGNvbW1hbmQ6IGBucG0gaW5zdGFsbCAtZyBAbW9ja29vbi9jbGlgLgoKWW91IGNhbiBydW4geW91ciBtb2NrIGluIG9uZSBzaW5nbGUgc3RlcCB1c2luZyB0aGUgW3N0YXJ0IGNvbW1hbmRdKCNtb2Nrb29uLWNsaS1zdGFydCkgYW5kIHJlcGxhY2luZyBgfi9wYXRoL3RvL3lvdXItZW52aXJvbm1lbnQtZmlsZS5qc29uYCBieSB0aGUgYWN0dWFsIGxvY2F0aW9uIG9mIHlvdXIgTW9ja29vbiBlbnZpcm9ubWVudCBmaWxlOgoKYGBgc2gtc2Vzc2lvbnMKJCBtb2Nrb29uLWNsaSBzdGFydCAtLWRhdGEgfi9wYXRoL3RvL3lvdXItZW52aXJvbm1lbnQtZmlsZS5qc29uCmBgYAoKPiBUbyBsb2NhdGUgeW91ciBlbnZpcm9ubWVudCBmaWxlIGZyb20gdGhlIG1haW4gYXBwbGljYXRpb24sIHJpZ2h0LWNsaWNrIG9uIGEgZW52aXJvbm1lbnQgYW5kIHNlbGVjdCAiU2hvdyBpbiBmb2xkZXIiIGluIHRoZSBjb250ZXh0IG1lbnU6Cj4gIVtjb250ZXh0IG1lbnUgLSBzaG93IGluIGZvbGRlcl0oL2RvY3MvZW52aXJvbm1lbnQtc2hvdy1pbi1mb2xkZXIucG5nKQoKWW91IGNhbiBhbHNvIGRpcmVjdGx5IGxvYWQgTW9ja29vbidzIGVudmlyb25tZW50IGZpbGUgZnJvbSBhIFVSTC4gVG8gZG8gc28sIHByb3ZpZGUgdGhlIFVSTCBhcyB0aGUgYGRhdGFgIHBhcmFtZXRlciBpbnN0ZWFkIG9mIGEgbG9jYWwgcGF0aDoKCmBgYHNoLXNlc3Npb25zCiQgbW9ja29vbi1jbGkgc3RhcnQgLS1kYXRhIGh0dHBzOi8vZG9tYWluLmNvbS95b3VyLWVudmlyb25tZW50LWZpbGUuanNvbgpgYGAKCj4gKipVc2UgYSBsZWdhY3kgZXhwb3J0IGZpbGUqKgo+Cj4gV2hpbGUgd2UgcmVjb21tZW5kIHVzaW5nIHRoZSBtZXRob2QgYWJvdmUgdG8gbGF1bmNoIHlvdXIgbW9ja3Mgd2l0aCB0aGUgQ0xJLCB5b3UgY2FuIHN0aWxsIHVzZSBNb2Nrb29uJ3MgW2xlZ2FjeSBleHBvcnQgZmlsZXNdKGh0dHBzOi8vbW9ja29vbi5jb20vZG9jcy9sYXRlc3QvbW9ja29vbi1kYXRhLWZpbGVzL2ltcG9ydC1leHBvcnQtbW9ja29vbi1mb3JtYXQvKS4KCiMjIyBVc2UgYW4gT3BlbkFQSSBzcGVjaWZpY2F0aW9uIGZpbGUKCkFub3RoZXIgb3B0aW9uIGlzIHRvIGRpcmVjdGx5IHBhc3MgYW4gT3BlbkFQSSBzcGVjaWZpY2F0aW9uIGZpbGUgYXMgdGhlIGBkYXRhYCBwYXJhbWV0ZXIuIE1vY2tvb24gc3VwcG9ydHMgYm90aCBKU09OIGFuZCBZQU1MIGZvcm1hdHMgaW4gdmVyc2lvbnMgMi4wLjAgYW5kIDMuMC4wLgoKWW91IGNhbiBwcm92aWRlIGEgcGF0aCB0byBhIGxvY2FsIE9wZW5BUEkgc3BlY2lmaWNhdGlvbiBmaWxlIG9yIGRpcmVjdGx5IHRoZSBmaWxlJ3MgVVJMOgoKYGBgc2gtc2Vzc2lvbnMKJCBtb2Nrb29uLWNsaSBzdGFydCAtLWRhdGEgfi9wYXRoL3RvL3lvdXItb3BlYW5hcGktZmlsZS55YW1sCmBgYAoKT3IsCgpgYGBzaC1zZXNzaW9ucwokIG1vY2tvb24tY2xpIHN0YXJ0IC0tZGF0YSBodHRwczovL2RvbWFpbi5jb20veW91ci1vcGVhbmFwaS1maWxlLnlhbWwKYGBgCgojIyBDb21wYXRpYmlsaXR5CgpNb2Nrb29uJ3MgQ0xJIGhhcyBiZWVuIHRlc3RlZCBvbiBOb2RlLmpzIHZlcnNpb25zIDEyLCAxNCwgMTUgYW5kIDE2LgoKIyMgQ29tbWFuZHMKCi0gW2Btb2Nrb29uLWNsaSBzdGFydGBdKCNtb2Nrb29uLWNsaS1zdGFydCkKLSBbYG1vY2tvb24tY2xpIGxpc3QgW0lEXWBdKCNtb2Nrb29uLWNsaS1saXN0LWlkKQotIFtgbW9ja29vbi1jbGkgc3RvcCBbSURdYF0oI21vY2tvb24tY2xpLXN0b3AtaWQpCi0gW2Btb2Nrb29uLWNsaSBkb2NrZXJpemVgXSgjbW9ja29vbi1jbGktZG9ja2VyaXplKQotIFtgbW9ja29vbi1jbGkgaGVscCBbQ09NTUFORF1gXSgjbW9ja29vbi1jbGktaGVscC1jb21tYW5kKQoKIyMjIGBtb2Nrb29uLWNsaSBzdGFydGAKClN0YXJ0cyBvbmUgKG9yIG1vcmUpIG1vY2sgQVBJIGZyb20gTW9ja29vbidzIGVudmlyb25tZW50IGZpbGUocykuCgpUaGUgcHJvY2VzcyB3aWxsIGJlIGNyZWF0ZWQgYnkgZGVmYXVsdCB3aXRoIHRoZSBuYW1lIGFuZCBwb3J0IG9mIHRoZSBNb2Nrb29uJ3MgZW52aXJvbm1lbnQuIFlvdSBjYW4gb3ZlcnJpZGUgdGhlc2UgdmFsdWVzIGJ5IHVzaW5nIHRoZSBgLS1wb3J0YCBhbmQgYC0tcG5hbWVgIGZsYWdzLgpgLS1kYXRhYCwgYC0tcG9ydGAsIGAtLXBuYW1lYCBhbmQgYC0taG9zdG5hbWVgIGZsYWdzIHN1cHBvcnQgbXVsdGlwbGUgZW50cmllcyB0byBydW4gbXVsdGlwbGUgbW9jayBBUElzIGF0IG9uY2UgKHNlZSBleGFtcGxlcyBiZWxvdykuCgpVc2luZyB0aGUgYC0tZGFlbW9uLW9mZmAgZmxhZyB3aWxsIGtlZXAgdGhlIENMSSBpbiB0aGUgZm9yZWdyb3VuZC4gVGhlIG1vY2sgQVBJIHByb2Nlc3Mgd2lsbCBub3QgYmUgW21hbmFnZWQgYnkgUE0yXSgjcG0yKS4gV2hlbiBydW5uaW5nIGFzIGEgYmxvY2tpbmcgcHJvY2VzcywgYWxsIHRoZSBsb2dzIGFyZSBzZW50IHRvIGJvdGggc3Rkb3V0IChjb25zb2xlKSBhbmQgdGhlIFt1c3VhbCBmaWxlc10obG9ncykuCgo+IFRoaXMgY29tbWFuZCBpcyBjb21wYXRpYmxlIHdpdGggW2xlZ2FjeSBleHBvcnQgZmlsZXNdKGh0dHBzOi8vbW9ja29vbi5jb20vZG9jcy9sYXRlc3QvbW9ja29vbi1kYXRhLWZpbGVzL2ltcG9ydC1leHBvcnQtbW9ja29vbi1mb3JtYXQvKS4gQXMgYW4gZXhwb3J0IGZpbGUgY2FuIGNvbnRhaW4gbXVsdGlwbGUgZW52aXJvbm1lbnRzLCB5b3UgY2FuIGluZGljYXRlIHRoZSBvbmUgeW91IHdhbnQgdG8gcnVuIGJ5IHNwZWNpZnlpbmcgaXRzIGAtLWluZGV4YCBvciBpdHMgYC0tbmFtZWAuIElmIG9ubHkgb25lIGVudmlyb25tZW50IGlzIHByZXNlbnQgaW4gdGhlIGZpbGUsIHlvdSBjYW4gb21pdCB0aGUgaW5kZXgsIGFuZCB0aGUgQ0xJIHdpbGwgcnVuIGl0IGJ5IGRlZmF1bHQuCgpgYGAKVVNBR0UKICAkIG1vY2tvb24tY2xpIHN0YXJ0CgpPUFRJT05TCiAgLWQsIC0tZGF0YSAgICAgICAgICAgICAgW3JlcXVpcmVkXSBQYXRoKHMpIG9yIFVSTChzKSB0byB5b3VyIE1vY2tvb24gZmlsZShzKQogIC1OLCAtLXBuYW1lICAgICAgICAgICAgIE92ZXJyaWRlIHByb2Nlc3MoZXMpIG5hbWUocykKICAtcCwgLS1wb3J0ICAgICAgICAgICAgICBPdmVycmlkZSBlbnZpcm9ubWVudChzKSBwb3J0KHMpCiAgLWwsIC0taG9zdG5hbWU9MC4wLjAuMCAgT3ZlcnJpZGUgZGVmYXVsdCBsaXN0ZW5pbmcgaG9zdG5hbWUocykgKDAuMC4wLjApCiAgLXQsIC0tbG9nLXRyYW5zYWN0aW9uICAgTG9nIHRoZSBmdWxsIEhUVFAgdHJhbnNhY3Rpb24gKHJlcXVlc3QgYW5kIHJlc3BvbnNlKQogIC1yLCAtLXJlcGFpciAgICAgICAgICAgIElmIHRoZSBkYXRhIGZpbGUgc2VlbXMgdG9vIG9sZCwgb3IgYW4gaW52YWxpZCBNb2Nrb29uIGZpbGUsIG1pZ3JhdGUvcmVwYWlyIHdpdGhvdXQgcHJvbXB0aW5nCiAgLUQsIC0tZGFlbW9uLW9mZiAgICAgICAgS2VlcCB0aGUgQ0xJIGluIHRoZSBmb3JlZ3JvdW5kIGFuZCBkbyBub3QgbWFuYWdlIHRoZSBwcm9jZXNzIHdpdGggUE0yCiAgLWgsIC0taGVscCAgICAgICAgICAgICAgU2hvdyBDTEkgaGVscAoKRVhBTVBMRVMKICAkIG1vY2tvb24tY2xpIHN0YXJ0IC0tZGF0YSB+L2RhdGEuanNvbgogICQgbW9ja29vbi1jbGkgc3RhcnQgLS1kYXRhIH4vZGF0YTEuanNvbiB+L2RhdGEyLmpzb24gLS1wb3J0IDMwMDAgMzAwMSAtLXBuYW1lIG1vY2sxIG1vY2syCiAgJCBtb2Nrb29uLWNsaSBzdGFydCAtLWRhdGEgaHR0cHM6Ly9maWxlLXNlcnZlci9kYXRhLmpzb24KICAkIG1vY2tvb24tY2xpIHN0YXJ0IC0tZGF0YSB+L2RhdGEuanNvbiAtLXBuYW1lICJwcm9jMSIKICAkIG1vY2tvb24tY2xpIHN0YXJ0IC0tZGF0YSB+L2RhdGEuanNvbiAtLWRhZW1vbi1vZmYKICAkIG1vY2tvb24tY2xpIHN0YXJ0IC0tZGF0YSB+L2RhdGEuanNvbiAtLWxvZy10cmFuc2FjdGlvbgpgYGAKCiMjIyBgbW9ja29vbi1jbGkgbGlzdCBbSURdYAoKX0NvbW1hbmQgYWxpYXM6IGBpbmZvYF8KCkxpc3RzIGFsbCB0aGUgcnVubmluZyBtb2NrIEFQSXMgYW5kIGRpc3BsYXkgc29tZSBpbmZvcm1hdGlvbjogcHJvY2VzcyBuYW1lLCBwaWQsIHN0YXR1cywgY3B1LCBtZW1vcnksIHBvcnQuCllvdSBjYW4gYWxzbyBnZXQgdGhlIHNhbWUgaW5mb3JtYXRpb24gZm9yIGEgc3BlY2lmaWMgbW9jayBBUEkgYnkgcHJvdmlkaW5nIGl0cyBwaWQgb3IgbmFtZS4KCmBgYApVU0FHRQogICQgbW9ja29vbi1jbGkgbGlzdAoKQVJHVU1FTlRTCiAgSUQgIFJ1bm5pbmcgQVBJIHBpZCBvciBuYW1lCgpPUFRJT05TCiAgLWgsIC0taGVscCAgc2hvdyBDTEkgaGVscAoKRVhBTVBMRQogICQgbW9ja29vbi1jbGkgbGlzdAogICQgbW9ja29vbi1jbGkgaW5mbwogICQgbW9ja29vbi1jbGkgbGlzdCAwCiAgJCBtb2Nrb29uLWNsaSBsaXN0ICJNb2NrX2Vudmlyb25tZW50IgpgYGAKCiMjIyBgbW9ja29vbi1jbGkgc3RvcCBbSURdYAoKU3RvcHMgb25lIG9yIG1vcmUgcnVubmluZyBwcm9jZXNzZXMuIFdoZW4gJ2FsbCcgaXMgcHJvdmlkZWQsIGFsbCBwcm9jZXNzZXMgd2lsbCBiZSBzdG9wcGVkLgoKYGBgClVTQUdFCiAgJCBtb2Nrb29uLWNsaSBzdG9wIFtJRF0KCkFSR1VNRU5UUwogIElEICBSdW5uaW5nIEFQSSBwaWQgb3IgbmFtZQoKT1BUSU9OUwogIC1oLCAtLWhlbHAgIHNob3cgQ0xJIGhlbHAKCkVYQU1QTEUKICAkIG1vY2tvb24tY2xpIHN0b3AKICAkIG1vY2tvb24tY2xpIHN0b3AgMAogICQgbW9ja29vbi1jbGkgc3RvcCAibmFtZSIKICAkIG1vY2tvb24tY2xpIHN0b3AgImFsbCIKYGBgCgojIyMgYG1vY2tvb24tY2xpIGRvY2tlcml6ZWAKCkdlbmVyYXRlcyBhIERvY2tlcmZpbGUgdXNlZCB0byBidWlsZCBhIHNlbGYtY29udGFpbmVkIGltYWdlIG9mIG9uZSBvciBtb3JlIG1vY2sgQVBJLiBBZnRlciBidWlsZGluZyB0aGUgaW1hZ2UsIG5vIGFkZGl0aW9uYWwgcGFyYW1ldGVycyB3aWxsIGJlIG5lZWRlZCB3aGVuIHJ1bm5pbmcgdGhlIGNvbnRhaW5lci4KVGhpcyBjb21tYW5kIHRha2VzIHNpbWlsYXIgZmxhZ3MgYXMgdGhlIFtgc3RhcnRgIGNvbW1hbmRdKCNtb2Nrb29uLXN0YXJ0KS4KClBsZWFzZSBub3RlIHRoYXQgdGhpcyBjb21tYW5kIHdpbGwgY29weSB5b3VyIE1vY2tvb24gZW52aXJvbm1lbnQgZnJvbSB0aGUgZmlsZSB5b3UgcHJvdmlkZSBhbmQgcHV0IGl0IHNpZGUgYnkgc2lkZSB3aXRoIHRoZSBnZW5lcmF0ZWQgRG9ja2VyZmlsZS4gQm90aCBmaWxlcyBhcmUgcmVxdWlyZWQgaW4gb3JkZXIgdG8gYnVpbGQgdGhlIGltYWdlLgoKRm9yIG1vcmUgaW5mb3JtYXRpb24gb24gaG93IHRvIGJ1aWxkIHRoZSBpbWFnZTogW1VzaW5nIHRoZSBkb2NrZXJpemUgY29tbWFuZF0oI3VzaW5nLXRoZS1kb2NrZXJpemUtY29tbWFuZCkKCmBgYApVU0FHRQogICQgbW9ja29vbi1jbGkgZG9ja2VyaXplCgpPUFRJT05TCiAgLWQsIC0tZGF0YSAgICAgICAgICAgICAgW3JlcXVpcmVkXSBQYXRoIG9yIFVSTCB0byB5b3VyIE1vY2tvb24gZmlsZQogIC1wLCAtLXBvcnQgICAgICAgICAgICAgIE92ZXJyaWRlIGVudmlyb25tZW50J3MgcG9ydAogIC1vLCAtLW91dHB1dCAgICAgICAgICAgIFtyZXF1aXJlZF0gR2VuZXJhdGVkIERvY2tlcmZpbGUgcGF0aCBhbmQgbmFtZSAoZS5nLiBgLi9Eb2NrZXJmaWxlYCkKICAtdCwgLS1sb2ctdHJhbnNhY3Rpb24gICBMb2cgdGhlIGZ1bGwgSFRUUCB0cmFuc2FjdGlvbiAocmVxdWVzdCBhbmQgcmVzcG9uc2UpCiAgLXIsIC0tcmVwYWlyICAgICAgICAgICAgSWYgdGhlIGRhdGEgZmlsZSBzZWVtcyB0b28gb2xkLCBvciBhbiBpbnZhbGlkIE1vY2tvb24gZmlsZSwgbWlncmF0ZS9yZXBhaXIgd2l0aG91dCBwcm9tcHRpbmcKICAtaCwgLS1oZWxwICAgICAgICAgICAgICBTaG93IENMSSBoZWxwCgpFWEFNUExFUwogICQgbW9ja29vbi1jbGkgZG9ja2VyaXplIC0tZGF0YSB+L2RhdGEuanNvbiAtLW91dHB1dCAuL0RvY2tlcmZpbGUKICAkIG1vY2tvb24tY2xpIGRvY2tlcml6ZSAtLWRhdGEgfi9kYXRhMS5qc29uIH4vZGF0YTIuanNvbiAtLW91dHB1dCAuL0RvY2tlcmZpbGUKICAkIG1vY2tvb24tY2xpIGRvY2tlcml6ZSAtLWRhdGEgaHR0cHM6Ly9maWxlLXNlcnZlci9kYXRhLmpzb24gLS1vdXRwdXQgLi9Eb2NrZXJmaWxlCmBgYAoKIyMjIGBtb2Nrb29uLWNsaSBoZWxwIFtDT01NQU5EXWAKClJldHVybnMgaW5mb3JtYXRpb24gYWJvdXQgYSBjb21tYW5kLgoKYGBgClVTQUdFCiAgJCBtb2Nrb29uLWNsaSBoZWxwIFtDT01NQU5EXQoKQVJHVU1FTlRTCiAgQ09NTUFORCAgY29tbWFuZCB0byBzaG93IGhlbHAgZm9yCgpPUFRJT05TCiAgLS1hbGwgIHNlZSBhbGwgY29tbWFuZHMgaW4gQ0xJCmBgYAoKIyMgRG9ja2VyCgojIyMgVXNpbmcgdGhlIGdlbmVyaWMgRG9ja2VyIGltYWdlCgpBIGdlbmVyaWMgRG9ja2VyIGltYWdlIGlzIHB1Ymxpc2hlZCBvbiB0aGUgW0RvY2tlciBIdWIgTW9ja29vbiBDTEkgcmVwb3NpdG9yeV0oaHR0cHM6Ly9odWIuZG9ja2VyLmNvbS9yL21vY2tvb24vY2xpKS4gSXQgdXNlcyBgbm9kZToxNC1hbHBpbmVgIGFuZCBpbnN0YWxscyB0aGUgbGF0ZXN0IHZlcnNpb24gb2YgTW9ja29vbiBDTEkuCgpBbGwgb2YgYG1vY2tvb24tY2xpIHN0YXJ0YCBmbGFncyAoYC0tcG9ydGAsIGV0Yy4pIG11c3QgYmUgcHJvdmlkZWQgd2hlbiBydW5uaW5nIHRoZSBjb250YWluZXIuCgpUbyBsb2FkIHRoZSBNb2Nrb29uIGRhdGEsIHlvdSBjYW4gZWl0aGVyIG1vdW50IGEgbG9jYWwgZGF0YSBmaWxlIGFuZCBwYXNzIGBtb2Nrb29uLWNsaSBzdGFydGAgZmxhZ3MgYXQgdGhlIGVuZCBvZiB0aGUgY29tbWFuZDoKCmBkb2NrZXIgcnVuIC1kIC0tbW91bnQgdHlwZT1iaW5kLHNvdXJjZT0vaG9tZS95b3VyLWRhdGEtZmlsZS5qc29uLHRhcmdldD0vZGF0YSxyZWFkb25seSAtcCAzMDAwOjMwMDAgbW9ja29vbi9jbGk6bGF0ZXN0IC0tZGF0YSBkYXRhIC0tcG9ydCAzMDAwYAoKT3IgZGlyZWN0bHkgcGFzcyBhIFVSTCB0byB0aGUgYG1vY2tvb24tY2xpIHN0YXJ0YCBjb21tYW5kLCB3aXRob3V0IG1vdW50aW5nIGEgbG9jYWwgZGF0YSBmaWxlOgoKYGRvY2tlciBydW4gLWQgLXAgMzAwMDozMDAwIG1vY2tvb24vY2xpOmxhdGVzdCAtZCBodHRwczovL3Jhdy5naXRodWJ1c2VyY29udGVudC5jb20vbW9ja29vbi9tb2NrLXNhbXBsZXMvbWFpbi9zYW1wbGVzL2dlbmVyYXRlLW1vY2stZGF0YS5qc29uIC0tcG9ydCAzMDAwYAoKTW9ja29vbiBDTEkncyBsb2dzIHdpbGwgYmUgc2VudCB0byBib3RoIHN0ZG91dCAoY29uc29sZSkgYW5kIHRoZSBbdXN1YWwgZmlsZXNdKCNsb2dzKS4KCiMjIyBVc2luZyB0aGUgYGRvY2tlcml6ZWAgY29tbWFuZAoKWW91IGNhbiB1c2UgdGhlIFtgZG9ja2VyaXplYCBjb21tYW5kXSgjbW9ja29vbi1jbGktZG9ja2VyaXplKSB0byBnZW5lcmF0ZSBhIG5ldyBEb2NrZXJmaWxlIHRoYXQgd2lsbCBhbGxvdyB5b3UgdG8gYnVpbGQgYSBzZWxmLWNvbnRhaW5lZCBpbWFnZS4gVGh1cywgbm8gTW9ja29vbiBDTEkgc3BlY2lmaWMgcGFyYW1ldGVycyB3aWxsIGJlIG5lZWRlZCB3aGVuIHJ1bm5pbmcgdGhlIGNvbnRhaW5lci4gWW91IGNhbiBzdGlsbCBwcm92aWRlIGFyZ3VtZW50cyBhdCBydW50aW1lIGlmIG5lZWRlZCAoc2VlIHRoZSBsYXN0IGV4YW1wbGUpLgoKLSBSdW4gdGhlIGBkb2NrZXJpemVgIGNvbW1hbmQ6CgogIGBtb2Nrb29uLWNsaSBkb2NrZXJpemUgLS1kYXRhIC4vc2FtcGxlLWRhdGEuanNvbiAtLXBvcnQgMzAwMCAtLW91dHB1dCAuL3RtcC9Eb2NrZXJmaWxlYAoKLSBuYXZpZ2F0ZSB0byB0aGUgYHRtcGAgZm9sZGVyLCB3aGVyZSB0aGUgRG9ja2VyZmlsZSBoYXMgYmVlbiBnZW5lcmF0ZWQ6CgogIGBjZCB0bXBgCgotIEJ1aWxkIHRoZSBpbWFnZToKCiAgYGRvY2tlciBidWlsZCAtdCBtb2Nrb29uLW1vY2sxIC5gCgotIFJ1biB0aGUgY29udGFpbmVyOgoKICBgZG9ja2VyIHJ1biAtZCAtcCA8aG9zdF9wb3J0PjozMDAwIG1vY2tvb24tbW9jazFgCgotIE9yIHJ1biB0aGUgY29udGFpbmVyIHdpdGggYXJndW1lbnRzOgoKICBgZG9ja2VyIHJ1biAtZCAtcCA8aG9zdF9wb3J0PjozMDAwIG1vY2tvb24tbW9jazEgLS1sb2ctdHJhbnNhY3Rpb25gCgojIyBMb2dzCgpMb2dzIGFyZSBsb2NhdGVkIGluIGB+Ly5tb2Nrb29uLWNsaS9sb2dzL3ttb2NrLW5hbWV9LVtlcnJvcnxvdXRdLmxvZ2AuCgpUaGUgYGVycm9yLmxvZ2AgZmlsZSBjb250YWlucyBtb3N0bHkgc2VydmVyIGVycm9ycyB0aGF0IG9jY3VyIGF0IHN0YXJ0dXAgdGltZSBhbmQgcHJldmVudCB0aGUgbW9jayBBUEkgdG8gcnVuIChwb3J0IGFscmVhZHkgaW4gdXNlLCBldGMuKS4gVGhleSBzaG91bGRuJ3Qgb2NjdXIgdGhhdCBvZnRlbi4KClRoZSBgb3V0LmxvZ2AgZmlsZSBjb250YWlucyBhbGwgb3RoZXIgbG9nIGVudHJpZXMgKGFsbCBsZXZlbHMpIHByb2R1Y2VkIGJ5IHRoZSBydW5uaW5nIG1vY2sgc2VydmVyLiBNb3N0IG9mIHRoZSBlcnJvcnMgb2NjdXJyaW5nIGluIE1vY2tvb24gQ0xJIChvciB0aGUgbWFpbiBhcHBsaWNhdGlvbikgYXJlIG5vdCBjcml0aWNhbCBhbmQgdGhlcmVmb3JlIGNvbnNpZGVyZWQgYXMgbm9ybWFsIG91dHB1dC4gQXMgYW4gZXhhbXBsZSwgaWYgdGhlIEpTT04gYm9keSBmcm9tIGFuIGVudGVyaW5nIHJlcXVlc3QgaXMgZXJyb25lb3VzLCBNb2Nrb29uIHdpbGwgbG9nIGEgSlNPTiBwYXJzaW5nIGVycm9yLCBidXQgaXQgd29uJ3QgYmxvY2sgdGhlIG5vcm1hbCBleGVjdXRpb24gb2YgdGhlIGFwcGxpY2F0aW9uLgoKV2hlbiBydW5uaW5nIHRoZSBDTEkgd2l0aCB0aGUgW2AtLWRhZW1vbi1vZmZgIGZsYWddKCNtb2Nrb29uLWNsaS1zdGFydCksIGxvZ3MgYXJlIHNlbnQgdG8gYm90aCBzdGRvdXQgKGNvbnNvbGUpIGFuZCB0aGUgYWJvdmUgZmlsZXMuCgpXaGVuIHVzaW5nIHRoZSBgLS1sb2ctdHJhbnNhY3Rpb25gIGZsYWcsIGxvZ3Mgd2lsbCBjb250YWluIHRoZSBmdWxsIHRyYW5zYWN0aW9uIChyZXF1ZXN0IGFuZCByZXNwb25zZSkgd2l0aCB0aGUgc2FtZSBpbmZvcm1hdGlvbiB5b3UgY2FuIHNlZSBpbiB0aGUgZGVza3RvcCBhcHBsaWNhdGlvbi4KCkV4YW1wbGU6CgpgYGBqc29uCnsKICAibGV2ZWwiOiAiaW5mbyIsCiAgIm1lc3NhZ2UiOiAiR0VUIC9hcGkvdGVzdCB8IDIwMCIsCiAgInRpbWVzdGFtcCI6ICIyMDIxLTEyLTA4VDE0OjUwOjA1LjAwNFoiLAogICJ0cmFuc2FjdGlvbiI6IHsKICAgICJwcm94aWVkIjogZmFsc2UsCiAgICAicmVxdWVzdCI6IHsKICAgICAgImJvZHkiOiAiIiwKICAgICAgImhlYWRlcnMiOiBbCiAgICAgICAgeyAia2V5IjogImFjY2VwdCIsICJ2YWx1ZSI6ICJhcHBsaWNhdGlvbi9qc29uLCB0ZXh0L3BsYWluLCAqLyoiIH0KICAgICAgXSwKICAgICAgIm1ldGhvZCI6ICJHRVQiLAogICAgICAicGFyYW1zIjogW10sCiAgICAgICJxdWVyeVBhcmFtcyI6IFtdLAogICAgICAicm91dGUiOiAiL2FwaS90ZXN0IiwKICAgICAgInVybFBhdGgiOiAiL2FwaS90ZXN0IgogICAgfSwKICAgICJyZXNwb25zZSI6IHsKICAgICAgImJvZHkiOiAicmVzcG9uc2UiLAogICAgICAiaGVhZGVycyI6IFsKICAgICAgICB7ICJrZXkiOiAiY29udGVudC1sZW5ndGgiLCAidmFsdWUiOiAiOCIgfSwKICAgICAgICB7ICJrZXkiOiAiY29udGVudC10eXBlIiwgInZhbHVlIjogImFwcGxpY2F0aW9uL2pzb247IGNoYXJzZXQ9dXRmLTgiIH0KICAgICAgXSwKICAgICAgInN0YXR1c0NvZGUiOiAyMDAKICAgIH0sCiAgICAicm91dGVSZXNwb25zZVVVSUQiOiAiYjFiYTk0OGYtODJiMy00Y2MyLTgwNjctNjkyZTU2MjMxOWFiIiwKICAgICJyb3V0ZVVVSUQiOiAiMzA0YTc2MWYtMzUxZC00MTVhLWJmNTktNmU5MjczMjJhZTYzIgogIH0KfQpgYGAKClRoZSBgdHJhbnNhY3Rpb25gIG1vZGVsIGNhbiBiZSBmb3VuZCBbaGVyZV0oaHR0cHM6Ly9naXRodWIuY29tL21vY2tvb24vY29tbW9ucy9ibG9iL21haW4vc3JjL21vZGVscy9zZXJ2ZXIubW9kZWwudHMjTDI2LUw0NCkuCgojIyBQTTIKCk1vY2tvb24gQ0xJIHVzZXMgW1BNMl0oaHR0cHM6Ly9wbTIua2V5bWV0cmljcy5pby8pIHRvIHN0YXJ0LCBzdG9wIG9yIGxpc3QgdGhlIHJ1bm5pbmcgbW9jayBBUElzIHdoZW4geW91IGFyZSBub3QgdXNpbmcgdGhlIGAtLWRhZW1vbi1vZmZgIGZsYWcuIFRoZXJlZm9yZSwgeW91IGNhbiBkaXJlY3RseSB1c2UgUE0yIGNvbW1hbmRzIHRvIG1hbmFnZSB0aGUgcHJvY2Vzc2VzLgoKIyMgTW9ja29vbidzIGRvY3VtZW50YXRpb24KCllvdSB3aWxsIGZpbmQgTW9ja29vbidzIFtkb2N1bWVudGF0aW9uXShodHRwczovL21vY2tvb24uY29tL2RvY3MvbGF0ZXN0KSBvbiB0aGUgb2ZmaWNpYWwgd2Vic2l0ZS4gSXQgY292ZXJzIHRoZSBtb3N0IGNvbXBsZXggZmVhdHVyZXMuCgojIyBTcG9uc29ycwoKTW9ja29vbiBpcyBhbiBvcGVuLXNvdXJjZSBwcm9qZWN0IGJ1aWx0IGJ5IHZvbHVudGVlciBtYWludGFpbmVycy4gSWYgeW91IGxpa2Ugb3VyIGFwcGxpY2F0aW9uLCBwbGVhc2UgY29uc2lkZXIgc3BvbnNvcmluZyB1cyBhbmQgam9pbiBhbGwgdGhlIFtTcG9uc29ycyBhbmQgQmFja2Vyc10oaHR0cHM6Ly9naXRodWIuY29tL21vY2tvb24vbW9ja29vbi9ibG9iL21haW4vYmFja2Vycy5tZCkgd2hvIGhlbHBlZCB0aGlzIHByb2plY3Qgb3ZlciB0aW1lIQoKPGRpdiBhbGlnbj0iY2VudGVyIj4KPGEgaHJlZj0iaHR0cHM6Ly9naXRodWIuY29tL3Nwb25zb3JzL21vY2tvb24iPjxpbWcgc3JjPSJodHRwczovL21vY2tvb24uY29tL2ltYWdlcy9zcG9uc29yLWJ0bi5wbmciIHdpZHRoPSIyNTAiIGFsdD0ic3BvbnNvciBidXR0b24iIC8+PC9hPgo8L2Rpdj4KCiMjIFN1cHBvcnQvZmVlZGJhY2sKCllvdSBjYW4gZGlzY3VzcyBhbGwgdGhpbmdzIHJlbGF0ZWQgdG8gTW9ja29vbidzIENMSSwgYW5kIGFzayBmb3IgaGVscCwgb24gdGhlIFtvZmZpY2lhbCBjb21tdW5pdHldKGh0dHBzOi8vZ2l0aHViLmNvbS9tb2Nrb29uL2NsaS9kaXNjdXNzaW9ucykuIEl0J3MgYWxzbyBhIGdvb2QgcGxhY2UgdG8gZGlzY3VzcyBidWdzIGFuZCBmZWF0dXJlIHJlcXVlc3RzIGJlZm9yZSBvcGVuaW5nIGFuIGlzc3VlIG9uIHRoaXMgcmVwb3NpdG9yeS4gRm9yIG1vcmUgY2hhdC1saWtlIGRpc2N1c3Npb25zLCB5b3UgY2FuIGFsc28gam9pbiBvdXIgW0Rpc2NvcmQgc2VydmVyXShodHRwczovL2Rpc2NvcmQuZ2cvTXV0UnBzWTVnRSkuCgojIyBDb250cmlidXRpbmcKCklmIHlvdSBhcmUgaW50ZXJlc3RlZCBpbiBjb250cmlidXRpbmcgdG8gTW9ja29vbiwgcGxlYXNlIHRha2UgYSBsb29rIGF0IHRoZSBbY29udHJpYnV0aW5nIGd1aWRlbGluZXNdKGh0dHBzOi8vZ2l0aHViLmNvbS9tb2Nrb29uL2NsaS9ibG9iL21haW4vQ09OVFJJQlVUSU5HLm1kKS4KClBsZWFzZSBhbHNvIHRha2UgYSBsb29rIGF0IG91ciBbQ29kZSBvZiBDb25kdWN0XShodHRwczovL2dpdGh1Yi5jb20vbW9ja29vbi9jbGkvYmxvYi9tYWluL0NPREVfT0ZfQ09ORFVDVC5tZCkuCgojIyBSb2FkbWFwCgpJZiB5b3Ugd2FudCB0byBrbm93IHdoYXQgd2lsbCBiZSBjb21pbmcgaW4gdGhlIG5leHQgcmVsZWFzZSB5b3UgY2FuIGNoZWNrIHRoZSBnbG9iYWwgW1JvYWRtYXBdKGh0dHBzOi8vZ2l0aHViLmNvbS9vcmdzL21vY2tvb24vcHJvamVjdHMvMikuCgpOZXcgcmVsZWFzZXMgd2lsbCBiZSBhbm5vdW5jZWQgb24gTW9ja29vbidzIFtUd2l0dGVyIGFjY291bnQgQEdldE1vY2tvb25dKGh0dHBzOi8vdHdpdHRlci5jb20vR2V0TW9ja29vbikgYW5kIHRocm91Z2ggdGhlIG5ld3NsZXR0ZXIgdG8gd2hpY2ggeW91IGNhbiBzdWJzY3JpYmUgW2hlcmVdKGh0dHA6Ly9lZXB1cmwuY29tL2Rza0IyWCkuCg== - readmeEtag: '"f9c463c3c2fc8fd5c8ca7fff13008dce8435594c82e4d2f3b2f7b3119d9e828a"' - readmeLastModified: Mon, 28 Mar 2022 19:39:59 GMT + PiAjIPCfk6ZUaGlzIHJlcG9zaXRvcnkgaGFzIGJlZW4gYXJjaGl2ZWQuIFdlIGtlZXAgaXQgZm9yIGhpc3RvcmljYWwgcmVhc29ucy4gWW91IHdpbGwgZmluZCBNb2Nrb29uJ3MgbmV3IG1vbm9yZXBvIFtoZXJlXShodHRwczovL2dpdGh1Yi5jb20vbW9ja29vbi9tb2Nrb29uKSBhbmQgdGhlIGN1cnJlbnQgQ0xJJ3MgZG9jdW1lbnRhdGlvbiBbaGVyZV0oaHR0cHM6Ly9naXRodWIuY29tL21vY2tvb24vbW9ja29vbi9ibG9iL21haW4vcGFja2FnZXMvY2xpL1JFQURNRS5tZCkKCjxkaXYgYWxpZ249ImNlbnRlciI+CiAgPGEgaHJlZj0iaHR0cHM6Ly9tb2Nrb29uLmNvbSIgYWx0PSJtb2Nrb29uIGxvZ28iPgogICAgPGltZyB3aWR0aD0iMjAwIiBoZWlnaHQ9IjIwMCIgc3JjPSJodHRwczovL21vY2tvb24uY29tL2ltYWdlcy9sb2dvLXNxdWFyZS1hcHAucG5nIj4KICA8L2E+CiAgPGJyPgogIDxhIGhyZWY9Imh0dHBzOi8vbW9ja29vbi5jb20vIj48aW1nIHNyYz0iaHR0cHM6Ly9pbWcuc2hpZWxkcy5pby9iYWRnZS9XZWJzaXRlLUdvLWdyZWVuLnN2Zz9zdHlsZT1mbGF0LXNxdWFyZSZjb2xvckI9MTk5N2M2Ii8+PC9hPgogIDxhIGhyZWY9Imh0dHBzOi8vbW9ja29vbi5jb20vbmV3c2xldHRlci8iPjxpbWcgc3JjPSJodHRwczovL2ltZy5zaGllbGRzLmlvL2JhZGdlL05ld3NsZXR0ZXItU3Vic2NyaWJlLWdyZWVuLnN2Zz9zdHlsZT1mbGF0LXNxdWFyZSIvPjwvYT4KICA8YSBocmVmPSJodHRwczovL3R3aXR0ZXIuY29tL0dldE1vY2tvb24iPjxpbWcgc3JjPSJodHRwczovL2ltZy5zaGllbGRzLmlvL2JhZGdlL1R3aXR0ZXJfQEdldE1vY2tvb24tZm9sbG93LWJsdWUuc3ZnP3N0eWxlPWZsYXQtc3F1YXJlJmNvbG9yQj0xZGExZjIiLz48L2E+CiAgPGEgaHJlZj0iW2h0dHBzOi8vZGlzY29yZC5nZy9GdEpqa2VqS0dwXShodHRwczovL21vY2tvb24uY29tL2Rpc2NvcmQvKSI+PGltZyBzcmM9Imh0dHBzOi8vaW1nLnNoaWVsZHMuaW8vYmFkZ2UvRGlzY29yZC1nby1ibHVlLnN2Zz9zdHlsZT1mbGF0LXNxdWFyZSZjb2xvckE9NmM4NGQ5JmNvbG9yQj0xZGExZjIiLz48L2E+ICAKICA8YnI+CiAgPGJyPgogIDxoMT5Nb2Nrb29uOiBhd2Vzb21lIEFQSSBtb2NraW5nPC9oMT4KPC9kaXY+CgojIyBNb2Nrb29uJ3MgZG9jdW1lbnRhdGlvbgoKWW91IHdpbGwgZmluZCBNb2Nrb29uJ3MgW2RvY3VtZW50YXRpb25dKGh0dHBzOi8vbW9ja29vbi5jb20vZG9jcy9sYXRlc3QvYWJvdXQvKSBvbiB0aGUgb2ZmaWNpYWwgd2Vic2l0ZS4gSXQgY292ZXJzIE1vY2tvb24ncyBtb3N0IGNvbXBsZXggZmVhdHVyZXMuIEZlZWwgZnJlZSB0byBjb250cmlidXRlIG9yIGFzayBmb3IgbmV3IHRvcGljcyB0byBiZSBjb3ZlcmVkLgoKIyMgQ2hhbmdlbG9ncwoKWW91IHdpbGwgZmluZCBNb2Nrb29uIGFwcGxpY2F0aW9ucyBbY2hhbmdlbG9nc10oaHR0cHM6Ly9tb2Nrb29uLmNvbS9yZWxlYXNlcy8pIG9uIHRoZSBvZmZpY2lhbCB3ZWJzaXRlLgoKIyMgU3VwcG9ydC9mZWVkYmFjawoKWW91IGNhbiBkaXNjdXNzIGFsbCB0aGluZ3MgcmVsYXRlZCB0byBNb2Nrb29uIGFuZCBhc2sgZm9yIGhlbHAgb24gdGhlIFtvZmZpY2lhbCBjb21tdW5pdHldKGh0dHBzOi8vZ2l0aHViLmNvbS9tb2Nrb29uL21vY2tvb24vZGlzY3Vzc2lvbnMpLiBJdCdzIGFsc28gYSBnb29kIHBsYWNlIHRvIGRpc2N1c3MgYnVncyBhbmQgZmVhdHVyZSByZXF1ZXN0cyBiZWZvcmUgb3BlbmluZyBhbiBpc3N1ZSBvbiB0aGlzIHJlcG9zaXRvcnkuIEZvciBtb3JlIGNoYXQtbGlrZSBkaXNjdXNzaW9ucywgeW91IGNhbiBhbHNvIGpvaW4gb3VyIFtEaXNjb3JkIHNlcnZlcl0oaHR0cHM6Ly9kaXNjb3JkLmdnL0Z0SmprZWpLR3ApLgoKIyMgQ29udHJpYnV0aW5nCgpJZiB5b3UgYXJlIGludGVyZXN0ZWQgaW4gY29udHJpYnV0aW5nIHRvIE1vY2tvb24sIHBsZWFzZSB0YWtlIGEgbG9vayBhdCB0aGUgW2NvbnRyaWJ1dGluZyBndWlkZWxpbmVzXShodHRwczovL2dpdGh1Yi5jb20vbW9ja29vbi9tb2Nrb29uL2Jsb2IvbWFpbi9DT05UUklCVVRJTkcubWQpLgoKUGxlYXNlIGFsc28gdGFrZSBhIGxvb2sgYXQgb3VyIFtDb2RlIG9mIENvbmR1Y3RdKGh0dHBzOi8vZ2l0aHViLmNvbS9tb2Nrb29uL21vY2tvb24vYmxvYi9tYWluL0NPREVfT0ZfQ09ORFVDVC5tZCkuCgojIyBSb2FkbWFwCgpJZiB5b3Ugd2FudCB0byBrbm93IHdoYXQgd2lsbCBiZSBjb21pbmcgaW4gdGhlIG5leHQgcmVsZWFzZSB5b3UgY2FuIGNoZWNrIHRoZSBnbG9iYWwgW1JvYWRtYXBdKGh0dHBzOi8vbW9ja29vbi5jb20vcHVibGljLXJvYWRtYXAvKS4KCk5ldyByZWxlYXNlcyB3aWxsIGJlIGFubm91bmNlZCBvbiBNb2Nrb29uJ3MgW1R3aXR0ZXIgYWNjb3VudCBAR2V0TW9ja29vbl0oaHR0cHM6Ly90d2l0dGVyLmNvbS9HZXRNb2Nrb29uKSBhbmQgdGhyb3VnaCB0aGUgbmV3c2xldHRlciB0byB3aGljaCB5b3UgY2FuIHN1YnNjcmliZSBbaGVyZV0oaHR0cHM6Ly9tb2Nrb29uLmNvbS9uZXdzbGV0dGVyLykuCg== + readmeEtag: '"c5c03d0fa50b5a977ae80d9a209ada9c0529fc97f4442d3d662e0e54b6b18c17"' + readmeLastModified: Fri, 12 Jul 2024 09:44:47 GMT repositoryId: 307501192 description: Mockoon's official CLI. Deploy your mock APIs anywhere. created: '2020-10-26T20:51:23Z' - updated: '2024-07-09T02:35:35Z' + updated: '2024-07-12T09:46:50Z' language: TypeScript archived: true stars: 178 - watchers: 7 + watchers: 8 forks: 23 owner: mockoon logo: https://avatars.githubusercontent.com/u/49429147?v=4 license: MIT - repoEtag: '"ce09cbd1f551969545902c3de22a35af8f1b2a901e27a3728a3b723262882520"' - repoLastModified: Tue, 09 Jul 2024 02:35:35 GMT + repoEtag: '"e2c9e65dc72c58e63642b94641d876fa66e3caba115cf099f61da234d42f3544"' + repoLastModified: Fri, 12 Jul 2024 09:46:50 GMT foundInMaster: true category: Description Validators id: 58c528e91eb0bb7db379914706c28f0a @@ -9815,17 +9815,17 @@ :capital_abcd: Tool for generation samples based on OpenAPI(fka Swagger) payload/response schema created: '2016-05-29T10:29:32Z' - updated: '2024-07-11T21:37:55Z' + updated: '2024-07-12T12:59:40Z' language: JavaScript archived: false - stars: 177 + stars: 178 watchers: 19 forks: 46 owner: Redocly logo: https://avatars.githubusercontent.com/u/32099856?v=4 license: MIT - repoEtag: '"18832d66cdafed9fe5f09dc64f785687ba6939c2f40a67c532b01edaaedc93a1"' - repoLastModified: Thu, 11 Jul 2024 21:37:55 GMT + repoEtag: '"024e4b82c14d312698ae9a61cd71e3addef165c2777322e5aca6b303e5f21ea0"' + repoLastModified: Fri, 12 Jul 2024 12:59:40 GMT foundInMaster: true v3_1: true category: @@ -9868,17 +9868,17 @@ repositoryId: 166778187 description: A standard library for microservices. created: '2019-01-21T08:41:32Z' - updated: '2024-06-11T07:51:53Z' + updated: '2024-07-12T14:16:51Z' language: Go archived: false stars: 171 - watchers: 10 + watchers: 12 forks: 21 owner: pace logo: https://avatars.githubusercontent.com/u/16001479?v=4 license: MIT - repoEtag: '"760213c5a73960df48bf033e13bcec401a9d0ff8131abb49fde1cb039829e342"' - repoLastModified: Tue, 11 Jun 2024 07:51:53 GMT + repoEtag: '"2126911c087acf96822dd2732f2c338929de07ae0770642fae3c42ff5f7dcd66"' + repoLastModified: Fri, 12 Jul 2024 14:16:51 GMT foundInMaster: true category: Server id: e6dd06a50e0916bde709fbfdeae306a5 @@ -9996,17 +9996,17 @@ repositoryId: 673944158 description: This repository contains the specification files for PayPal REST APIs. created: '2023-08-02T19:26:26Z' - updated: '2024-07-09T18:56:41Z' + updated: '2024-07-12T13:21:32Z' language: null archived: false stars: 164 watchers: 18 - forks: 114 + forks: 115 owner: paypal logo: https://avatars.githubusercontent.com/u/476675?v=4 license: Apache-2.0 - repoEtag: '"5654d6b91805e8065d1845aa260e1004e1cc78b4c6fcd6f86fc1ce6f8ed7feeb"' - repoLastModified: Tue, 09 Jul 2024 18:56:41 GMT + repoEtag: '"0cf324c0b12b7f00f5adffef63c637637a4209a8848918d26be23bf7fa9aecb7"' + repoLastModified: Fri, 12 Jul 2024 13:21:32 GMT category: Code Generators foundInMaster: true - source: openapi3 tags @@ -10015,23 +10015,23 @@ id: 17db61563d8b069fd3d4a63d36459a68 repositoryMetadata: base64Readme: >- - WyFbQnVpbGRdKGh0dHBzOi8vZ2l0aHViLmNvbS9jaHJpc3RpYW5oZWxsZS9yZWZpdHRlci9hY3Rpb25zL3dvcmtmbG93cy9idWlsZC55bWwvYmFkZ2Uuc3ZnKV0oaHR0cHM6Ly9naXRodWIuY29tL2NocmlzdGlhbmhlbGxlL3JlZml0dGVyL2FjdGlvbnMvd29ya2Zsb3dzL2J1aWxkLnltbCkKWyFbU21va2UgVGVzdHNdKGh0dHBzOi8vZ2l0aHViLmNvbS9jaHJpc3RpYW5oZWxsZS9yZWZpdHRlci9hY3Rpb25zL3dvcmtmbG93cy9zbW9rZS10ZXN0cy55bWwvYmFkZ2Uuc3ZnKV0oaHR0cHM6Ly9naXRodWIuY29tL2NocmlzdGlhbmhlbGxlL3JlZml0dGVyL2FjdGlvbnMvd29ya2Zsb3dzL3Ntb2tlLXRlc3RzLnltbCkKWyFbTnVHZXRdKGh0dHBzOi8vaW1nLnNoaWVsZHMuaW8vbnVnZXQvdi9yZWZpdHRlcj9jb2xvcj1ibHVlKV0oaHR0cHM6Ly93d3cubnVnZXQub3JnL3BhY2thZ2VzL3JlZml0dGVyKQpbIVtRdWFsaXR5IEdhdGUgU3RhdHVzXShodHRwczovL3NvbmFyY2xvdWQuaW8vYXBpL3Byb2plY3RfYmFkZ2VzL21lYXN1cmU/cHJvamVjdD1jaHJpc3RpYW5oZWxsZV9yZWZpdHRlciZtZXRyaWM9YWxlcnRfc3RhdHVzKV0oaHR0cHM6Ly9zb25hcmNsb3VkLmlvL3N1bW1hcnkvbmV3X2NvZGU/aWQ9Y2hyaXN0aWFuaGVsbGVfcmVmaXR0ZXIpClshW2NvZGVjb3ZdKGh0dHBzOi8vY29kZWNvdi5pby9naC9jaHJpc3RpYW5oZWxsZS9yZWZpdHRlci9ncmFwaC9iYWRnZS5zdmc/dG9rZW49MjQyWVQxTjZUMildKGh0dHBzOi8vY29kZWNvdi5pby9naC9jaHJpc3RpYW5oZWxsZS9yZWZpdHRlcikKCjwhLS0gQUxMLUNPTlRSSUJVVE9SUy1CQURHRTpTVEFSVCAtIERvIG5vdCByZW1vdmUgb3IgbW9kaWZ5IHRoaXMgc2VjdGlvbiAtLT4KWyFbQWxsIENvbnRyaWJ1dG9yc10oaHR0cHM6Ly9pbWcuc2hpZWxkcy5pby9iYWRnZS9hbGxfY29udHJpYnV0b3JzLTQ2LW9yYW5nZS5zdmc/c3R5bGU9ZmxhdC1zcXVhcmUpXSgjY29udHJpYnV0b3JzLSkKPCEtLSBBTEwtQ09OVFJJQlVUT1JTLUJBREdFOkVORCAtLT4KCiMgUmVmaXR0ZXIKUmVmaXR0ZXIgaXMgYSB0b29sIGZvciBnZW5lcmF0aW5nIGEgQyMgUkVTVCBBUEkgQ2xpZW50IHVzaW5nIHRoZSBbUmVmaXRdKGh0dHBzOi8vZ2l0aHViLmNvbS9yZWFjdGl2ZXVpL3JlZml0KSBsaWJyYXJ5LiBSZWZpdHRlciBjYW4gZ2VuZXJhdGUgdGhlIFJlZml0IGludGVyZmFjZSBhbmQgY29udHJhY3RzIGZyb20gT3BlbkFQSSBzcGVjaWZpY2F0aW9ucy4gCgpSZWZpdHRlciBjb21lcyBpbiAyIGZvcm1zOgotIEEgWy5ORVQgQ0xJIFRvb2xdKCNjbGktdG9vbCkgZGlzdHJpYnV0ZWQgdmlhIFtudWdldC5vcmddKGh0dHA6Ly93d3cubnVnZXQub3JnL3BhY2thZ2VzL3JlZml0dGVyKSB0aGF0IG91dHB1dHMgYSBzaW5nbGUgQyMgZmlsZSBvbiBkaXNrCi0gQSBbQyMgU291cmNlIEdlbmVyYXRvcl0oI3NvdXJjZS1nZW5lcmF0b3IpIHZpYSB0aGUgW1JlZml0dGVyLlNvdXJjZUdlbmVyYXRvcl0oaHR0cDovL3d3dy5udWdldC5vcmcvcGFja2FnZXMvcmVmaXR0ZXIuc291cmNlZ2VuZXJhdG9yKSBwYWNrYWdlIHRoYXQgZ2VuZXJhdGVzIGNvZGUgb24gY29tcGlsZSB0aW1lIGJhc2VkIG9uIGEgWy5yZWZpdHRlcl0oIy5yZWZpdHRlci1maWxlLWZvcm1hdCkgd2l0aGluIHRoZSBwcm9qZWN0IGRpcmVjdG9yeS4KCiMjIENMSSBUb29sCgojIyMgSW5zdGFsbGF0aW9uOgoKVGhlIHRvb2wgaXMgcGFja2FnZWQgYXMgYSAuTkVUIFRvb2wgYW5kIGlzIHB1Ymxpc2hlZCB0byBudWdldC5vcmcuIFlvdSBjYW4gaW5zdGFsbCB0aGUgbGF0ZXN0IHZlcnNpb24gb2YgdGhpcyB0b29sIGxpa2UgdGhpczoKCmBgYHNoZWxsCmRvdG5ldCB0b29sIGluc3RhbGwgLS1nbG9iYWwgUmVmaXR0ZXIKYGBgCgojIyMgVXNhZ2U6CgpgYGBzaGVsbAokIHJlZml0dGVyIC0taGVscApgYGAKCmBgYHRleHQKVVNBR0U6CiAgICByZWZpdHRlciBbVVJMIG9yIGlucHV0IGZpbGVdIFtPUFRJT05TXQoKRVhBTVBMRVM6CiAgICByZWZpdHRlciAuL29wZW5hcGkuanNvbgogICAgcmVmaXR0ZXIgaHR0cHM6Ly9wZXRzdG9yZTMuc3dhZ2dlci5pby9hcGkvdjMvb3BlbmFwaS55YW1sCiAgICByZWZpdHRlciAuL29wZW5hcGkuanNvbiAtLXNldHRpbmdzLWZpbGUgLi9vcGVuYXBpLnJlZml0dGVyIC0tb3V0cHV0IC4vR2VuZXJhdGVkQ29kZS5jcwogICAgcmVmaXR0ZXIgLi9vcGVuYXBpLmpzb24gLS1uYW1lc3BhY2UgIllvdXIuTmFtZXNwYWNlLk9mLkNob2ljZS5HZW5lcmF0ZWRDb2RlIiAtLW91dHB1dCAuL0dlbmVyYXRlZENvZGUuY3MKICAgIHJlZml0dGVyIC4vb3BlbmFwaS5qc29uIC0tbmFtZXNwYWNlICJZb3VyLk5hbWVzcGFjZS5PZi5DaG9pY2UuR2VuZXJhdGVkQ29kZSIgLS1pbnRlcm5hbAogICAgcmVmaXR0ZXIgLi9vcGVuYXBpLmpzb24gLS1vdXRwdXQgLi9JR2VuZXJhdGVkQ29kZS5jcyAtLWludGVyZmFjZS1vbmx5CiAgICByZWZpdHRlciAuL29wZW5hcGkuanNvbiAtLXVzZS1hcGktcmVzcG9uc2UKICAgIHJlZml0dGVyIC4vb3BlbmFwaS5qc29uIC0tY2FuY2VsbGF0aW9uLXRva2VucwogICAgcmVmaXR0ZXIgLi9vcGVuYXBpLmpzb24gLS1uby1vcGVyYXRpb24taGVhZGVycwogICAgcmVmaXR0ZXIgLi9vcGVuYXBpLmpzb24gLS1uby1hY2NlcHQtaGVhZGVycwogICAgcmVmaXR0ZXIgLi9vcGVuYXBpLmpzb24gLS11c2UtaXNvLWRhdGUtZm9ybWF0CiAgICByZWZpdHRlciAuL29wZW5hcGkuanNvbiAtLWFkZGl0aW9uYWwtbmFtZXNwYWNlICJZb3VyLkFkZGl0aW9uYWwuTmFtZXNwYWNlIiAtLWFkZGl0aW9uYWwtbmFtZXNwYWNlICJZb3VyLk90aGVyLkFkZGl0aW9uYWwuTmFtZXNwYWNlIgogICAgcmVmaXR0ZXIgLi9vcGVuYXBpLmpzb24gLS1tdWx0aXBsZS1pbnRlcmZhY2VzIEJ5RW5kcG9pbnQKICAgIHJlZml0dGVyIC4vb3BlbmFwaS5qc29uIC0tdGFnIFBldCAtLXRhZyBTdG9yZSAtLXRhZyBVc2VyCiAgICByZWZpdHRlciAuL29wZW5hcGkuanNvbiAtLW1hdGNoLXBhdGggJ14vcGV0Ly4qJwogICAgcmVmaXR0ZXIgLi9vcGVuYXBpLmpzb24gLS10cmltLXVudXNlZC1zY2hlbWEKICAgIHJlZml0dGVyIC4vb3BlbmFwaS5qc29uIC0tdHJpbS11bnVzZWQtc2NoZW1hICAtLWtlZXAtc2NoZW1hICdeTW9kZWwkJyAtLWtlZXAtc2NoZW1hICdeUGVyc29uLisnCiAgICByZWZpdHRlciAuL29wZW5hcGkuanNvbiAtLW5vLWRlcHJlY2F0ZWQtb3BlcmF0aW9ucwogICAgcmVmaXR0ZXIgLi9vcGVuYXBpLmpzb24gLS1vcGVyYXRpb24tbmFtZS10ZW1wbGF0ZSAne29wZXJhdGlvbk5hbWV9QXN5bmMnCiAgICByZWZpdHRlciAuL29wZW5hcGkuanNvbiAtLW9wdGlvbmFsLW51bGxhYmxlLXBhcmFtZXRlcnMKCkFSR1VNRU5UUzoKICAgIFtVUkwgb3IgaW5wdXQgZmlsZV0gICAgVVJMIG9yIGZpbGUgcGF0aCB0byBPcGVuQVBJIFNwZWNpZmljYXRpb24gZmlsZQoKT1BUSU9OUzoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgREVGQVVMVCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgIC1oLCAtLWhlbHAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQcmludHMgaGVscCBpbmZvcm1hdGlvbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgIC12LCAtLXZlcnNpb24gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQcmludHMgdmVyc2lvbiBpbmZvcm1hdGlvbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgIC1zLCAtLXNldHRpbmdzLWZpbGUgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQYXRoIHRvIC5yZWZpdHRlciBzZXR0aW5ncyBmaWxlLiBTcGVjaWZ5aW5nIHRoaXMgd2lsbCBpZ25vcmUgYWxsIG90aGVyIHNldHRpbmdzIChleGNlcHQgZm9yIC0tb3V0cHV0KSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgIC1uLCAtLW5hbWVzcGFjZSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR2VuZXJhdGVkQ29kZSAgICBEZWZhdWx0IG5hbWVzcGFjZSB0byB1c2UgZm9yIGdlbmVyYXRlZCB0eXBlcyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgIC1vLCAtLW91dHB1dCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgT3V0cHV0LmNzICAgICAgICBQYXRoIHRvIE91dHB1dCBmaWxlICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAtLW5vLWF1dG8tZ2VuZXJhdGVkLWhlYWRlciAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBEb24ndCBhZGQgPGF1dG8tZ2VuZXJhdGVkPiBoZWFkZXIgdG8gb3V0cHV0IGZpbGUgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAtLW5vLWFjY2VwdC1oZWFkZXJzICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBEb24ndCBhZGQgPEFjY2VwdD4gaGVhZGVyIHRvIG91dHB1dCBmaWxlICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAtLWludGVyZmFjZS1vbmx5ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBEb24ndCBnZW5lcmF0ZSBjb250cmFjdCB0eXBlcyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAtLXVzZS1hcGktcmVzcG9uc2UgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBSZXR1cm4gVGFzazxJQXBpUmVzcG9uc2U8VD4+IGluc3RlYWQgb2YgVGFzazxUPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAtLXVzZS1vYnNlcnZhYmxlLXJlc3BvbnNlICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBSZXR1cm4gSU9ic2VydmFibGUgaW5zdGVhZCBvZiBUYXNrICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAtLWludGVybmFsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTZXQgdGhlIGFjY2Vzc2liaWxpdHkgb2YgdGhlIGdlbmVyYXRlZCB0eXBlcyB0byAnaW50ZXJuYWwnICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAtLWNhbmNlbGxhdGlvbi10b2tlbnMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBVc2UgY2FuY2VsbGF0aW9uIHRva2VucyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAtLW5vLW9wZXJhdGlvbi1oZWFkZXJzICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBEb24ndCBnZW5lcmF0ZSBvcGVyYXRpb24gaGVhZGVycyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAtLW5vLWxvZ2dpbmcgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBEb24ndCBsb2cgZXJyb3JzIG9yIGNvbGxlY3QgdGVsZW1ldHJ5ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAtLWFkZGl0aW9uYWwtbmFtZXNwYWNlICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBBZGQgYWRkaXRpb25hbCBuYW1lc3BhY2UgdG8gZ2VuZXJhdGVkIHR5cGVzICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAtLXVzZS1pc28tZGF0ZS1mb3JtYXQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBFeHBsaWNpdGx5IGZvcm1hdCBkYXRlIHF1ZXJ5IHN0cmluZyBwYXJhbWV0ZXJzIGluIElTTyA4NjAxIHN0YW5kYXJkIGRhdGUgZm9ybWF0IHVzaW5nIGRlbGltaXRlcnMgKDIwMjMtMDYtMTUpICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAtLW11bHRpcGxlLWludGVyZmFjZXMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHZW5lcmF0ZSBhIFJlZml0IGludGVyZmFjZSBmb3IgZWFjaCBlbmRwb2ludC4gTWF5IGJlIG9uZSBvZiBCeUVuZHBvaW50LCBCeVRhZyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAtLW1hdGNoLXBhdGggICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBPbmx5IGluY2x1ZGUgUGF0aHMgdGhhdCBtYXRjaCB0aGUgcHJvdmlkZWQgcmVndWxhciBleHByZXNzaW9uLiBNYXkgYmUgc2V0IG11bHRpcGxlIHRpbWVzICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAtLXRhZyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBPbmx5IGluY2x1ZGUgRW5kcG9pbnRzIHRoYXQgY29udGFpbiB0aGlzIHRhZy4gTWF5IGJlIHNldCBtdWx0aXBsZSB0aW1lcyBhbmQgcmVzdWx0IGluIE9SJ2VkIGV2YWx1YXRpb24gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAtLXNraXAtdmFsaWRhdGlvbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTa2lwIHZhbGlkYXRpb24gb2YgdGhlIE9wZW5BUEkgc3BlY2lmaWNhdGlvbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAtLW5vLWRlcHJlY2F0ZWQtb3BlcmF0aW9ucyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBEb24ndCBnZW5lcmF0ZSBkZXByZWNhdGVkIG9wZXJhdGlvbnMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAtLW9wZXJhdGlvbi1uYW1lLXRlbXBsYXRlICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHZW5lcmF0ZSBvcGVyYXRpb24gbmFtZXMgdXNpbmcgcGF0dGVybi4gV2hlbiB1c2luZyAtLW11bHRpcGxlLWludGVyZmFjZXMgQnlFbmRwb2ludCwgdGhpcyBpcyBuYW1lIG9mIHRoZSBFeGVjdXRlKCkgbWV0aG9kIGluIHRoZSBpbnRlcmZhY2UKICAgICAgICAtLW9wdGlvbmFsLW51bGxhYmxlLXBhcmFtZXRlcnMgICAgICAgICAgICAgICAgICAgICAgICAgICBHZW5lcmF0ZSBudWxsYWJsZSBwYXJhbWV0ZXJzIGFzIG9wdGlvbmFsIHBhcmFtZXRlcnMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAtLXRyaW0tdW51c2VkLXNjaGVtYSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBSZW1vdmVzIHVucmVmZXJlbmNlZCBjb21wb25lbnRzIHNjaGVtYSB0byBrZWVwIHRoZSBnZW5lcmF0ZWQgb3V0cHV0IHRvIGEgbWluaW11bSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAtLWtlZXAtc2NoZW1hICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBGb3JjZSB0byBrZWVwIG1hdGNoaW5nIHNjaGVtYSwgdXNlcyByZWd1bGFyIGV4cHJlc3Npb25zLiBVc2UgdG9nZXRoZXIgd2l0aCAiLS10cmltLXVudXNlZC1zY2hlbWEiLiBDYW4gYmUgc2V0IG11bHRpcGxlIHRpbWVzICAgICAgICAgICAgICAKICAgICAgICAtLW5vLWJhbm5lciAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBEb24ndCBzaG93IGRvbmF0aW9uIGJhbm5lciAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAtLXNraXAtZGVmYXVsdC1hZGRpdGlvbmFsLXByb3BlcnRpZXMgICAgICAgICAgICAgICAgICAgICBTZXQgdG8gdHJ1ZSB0byBza2lwIGRlZmF1bHQgYWRkaXRpb25hbCBwcm9wZXJ0aWVzICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAtLW9wZXJhdGlvbi1uYW1lLWdlbmVyYXRvciAgICAgICAgICAgICAgRGVmYXVsdCAgICAgICAgICBUaGUgTlN3YWcgSU9wZXJhdGlvbk5hbWVHZW5lcmF0b3IgaW1wbGVtZW50YXRpb24gdG8gdXNlLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBNYXkgYmUgb25lIG9mOiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAtIERlZmF1bHQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAtIE11bHRpcGxlQ2xpZW50c0Zyb21PcGVyYXRpb25JZCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAtIE11bHRpcGxlQ2xpZW50c0Zyb21QYXRoU2VnbWVudHMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAtIE11bHRpcGxlQ2xpZW50c0Zyb21GaXJzdFRhZ0FuZE9wZXJhdGlvbklkICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAtIE11bHRpcGxlQ2xpZW50c0Zyb21GaXJzdFRhZ0FuZE9wZXJhdGlvbk5hbWUgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAtIE11bHRpcGxlQ2xpZW50c0Zyb21GaXJzdFRhZ0FuZFBhdGhTZWdtZW50cyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAtIFNpbmdsZUNsaWVudEZyb21PcGVyYXRpb25JZCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAtIFNpbmdsZUNsaWVudEZyb21QYXRoU2VnbWVudHMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTZWUgaHR0cHM6Ly9yZWZpdHRlci5naXRodWIuaW8vYXBpL1JlZml0dGVyLkNvcmUuT3BlcmF0aW9uTmFtZUdlbmVyYXRvclR5cGVzLmh0bWwgZm9yIG1vcmUgaW5mb3JtYXRpb24gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKYGBgCgpUbyBnZW5lcmF0ZSBjb2RlIGZyb20gYW4gT3BlbkFQSSBzcGVjaWZpY2F0aW9ucyBmaWxlLCBydW4gdGhlIGZvbGxvd2luZzoKCmBgYHNoZWxsCiQgcmVmaXR0ZXIgW3BhdGggdG8gT3BlbkFQSSBzcGVjIGZpbGVdIC0tbmFtZXNwYWNlICJbWW91ci5OYW1lc3BhY2UuT2YuQ2hvaWNlLkdlbmVyYXRlZENvZGVdIgpgYGAKClRoaXMgd2lsbCBnZW5lcmF0ZSBhIGZpbGUgY2FsbGVkIGBPdXRwdXQuY3NgIHdoaWNoIGNvbnRhaW5zIHRoZSBSZWZpdCBpbnRlcmZhY2UgYW5kIGNvbnRyYWN0IGNsYXNzZXMgZ2VuZXJhdGVkIHVzaW5nIFtOU3dhZ10oaHR0cHM6Ly9naXRodWIuY29tL1JpY29TdXRlci9OU3dhZykKCiMjIFNvdXJjZSBHZW5lcmF0b3IKClJlZml0dGVyIGlzIGF2YWlsYWJsZSBhcyBhIEMjIFNvdXJjZSBHZW5lcmF0b3IgdGhhdCB1c2VzIHRoZSBbUmVmaXR0ZXIuQ29yZV0oaHR0cHM6Ly9naXRodWIuY29tL2NocmlzdGlhbmhlbGxlL3JlZml0dGVyL3RyZWUvbWFpbi9zcmMvUmVmaXR0ZXIuQ29yZSkgbGlicmFyeSBmb3IgZ2VuZXJhdGluZyBhIFJFU1QgQVBJIENsaWVudCB1c2luZyB0aGUgW1JlZml0XShodHRwczovL2dpdGh1Yi5jb20vcmVhY3RpdmV1aS9yZWZpdCkgbGlicmFyeS4gUmVmaXR0ZXIgY2FuIGdlbmVyYXRlIHRoZSBSZWZpdCBpbnRlcmZhY2UgZnJvbSBPcGVuQVBJIHNwZWNpZmljYXRpb25zCgpUaGUgUmVmaXR0ZXIgc291cmNlIGdlbmVyYXRvciBpcyBhIGJpdCB1bnRyYWRpdGlvbmFsIGluIGEgc2Vuc2UgdGhhdCBpdCBjcmVhdGVzIGEgZm9sZGVyIGNhbGxlZCBgR2VuZXJhdGVkYCBpbiB0aGUgc2FtZSBsb2NhdGlvbiBhcyB0aGUgYC5yZWZpdHRlcmAgZmlsZSBhbmQgZ2VuZXJhdGVzIGZpbGVzIHRvIGRpc2sgdW5kZXIgdGhlIGBHZW5lcmF0ZWRgIGZvbGRlciAoY2FuIGJlIGNoYW5nZWQgd2l0aCBgLS1vdXRwdXRGb2xkZXJgKS4gVGhlIHNvdXJjZSBnZW5lcmF0b3Igb3V0cHV0IHNob3VsZCBiZSBpbmNsdWRlZCBpbiB0aGUgcHJvamVjdCBhbmQgY29tbWl0dGVkIHRvIHNvdXJjZSBjb250cm9sLiBUaGlzIGlzIGRvbmUgYmVjYXVzZSB0aGVyZSBpcyBubyBvdGhlciB3YXkgdG8gdHJpZ2dlciB0aGUgUmVmaXQgc291cmNlIGdlbmVyYXRvciB0byBwaWNrdXAgdGhlIFJlZml0dGVyIGdlbmVyYXRlZCBjb2RlIAoKKioqKFRyYW5zbGF0aW9uOiBJIGNvdWxkbid0IGZvciB0aGUgbGlmZSBvZiBtZSBmaWd1cmUgaG93IHRvIGdldCB0aGF0IHRvIHdvcmssIHNvcnJ5KSoqKgoKIyMjIEluc3RhbGxhdGlvbgoKVGhlIHNvdXJjZSBnZW5lcmF0b3IgaXMgZGlzdHJpYnV0ZWQgYXMgYSBOdUdldCBwYWNrYWdlIGFuZCBzaG91bGQgYmUgaW5zdGFsbGVkIHRvIHRoZSBwcm9qZWN0IHRoYXQgd2lsbCBjb250YWluIHRoZSBnZW5lcmF0ZWQgY29kZQoKYGBgc2hlbGwKZG90bmV0IGFkZCBwYWNrYWdlIFJlZml0dGVyLlNvdXJjZUdlbmVyYXRvcgpgYGAKCiMjIyBVc2FnZQoKVGhpcyBzb3VyY2UgZ2VuZXJhdG9yIGdlbmVyYXRlcyBjb2RlIGJhc2VkIG9uIGFueSBgLnJlZml0dGVyYCBmaWxlIGluY2x1ZGVkIHRvIHRoZSBwcm9qZWN0IGFzIGBBZGRpdGlvbmFsRmlsZXNgLgoKVGhlIGdlbmVyYXRvciBjYW4gYXV0b21hdGljYWxseSBkZXRlY3QgYWxsIGAucmVmaXR0ZXJgIGZpbGVzIGluc2lkZSB0aGUgcHJvamVjdCB0aGF0IHJlZmVyZW5jZWQgdGhlIGBSZWZpdHRlci5Tb3VyY2VHZW5lcmF0b3JgIHBhY2thZ2UgYW5kIHRoZXJlIGlzIG5vIG5lZWQgdG8gaW5jbHVkZSB0aGVtIG1hbnVhbGx5IGFzIGBBZGRpdGlvbmFsRmlsZXNgCgojIyMgLlJlZml0dGVyIEZpbGUgZm9ybWF0CgpUaGUgZm9sbG93aW5nIGlzIGFuIGV4YW1wbGUgYC5yZWZpdHRlcmAgZmlsZQoKYGBganMKewogICJvcGVuQXBpUGF0aCI6ICIvcGF0aC90by95b3VyL29wZW5BUEkiLCAvLyBSZXF1aXJlZAogICJuYW1lc3BhY2UiOiAiT3JnLlN5c3RlbS5TZXJ2aWNlLkFwaS5HZW5lcmF0ZWRDb2RlIiwgLy8gT3B0aW9uYWwuIERlZmF1bHQ9R2VuZXJhdGVkQ29kZQogICJuYW1pbmciOiB7CiAgICAidXNlT3BlbkFwaVRpdGxlIjogZmFsc2UsIC8vIE9wdGlvbmFsLiBEZWZhdWx0PXRydWUKICAgICJpbnRlcmZhY2VOYW1lIjogIk15QXBpQ2xpZW50IiAvLyBPcHRpb25hbC4gRGVmYXVsdD1BcGlDbGllbnQKICB9LAogICJnZW5lcmF0ZUNvbnRyYWN0cyI6IHRydWUsIC8vIE9wdGlvbmFsLiBEZWZhdWx0PXRydWUKICAiZ2VuZXJhdGVYbWxEb2NDb2RlQ29tbWVudHMiOiB0cnVlLCAvLyBPcHRpb25hbC4gRGVmYXVsdD10cnVlCiAgImdlbmVyYXRlU3RhdHVzQ29kZUNvbW1lbnRzIjogdHJ1ZSwgLy8gT3B0aW9uYWwuIERlZmF1bHQ9dHJ1ZQogICJhZGRBdXRvR2VuZXJhdGVkSGVhZGVyIjogdHJ1ZSwgLy8gT3B0aW9uYWwuIERlZmF1bHQ9dHJ1ZQogICJhZGRBY2NlcHRIZWFkZXJzIjogdHJ1ZSwgLy8gT3B0aW9uYWwuIERlZmF1bHQ9dHJ1ZQogICJyZXR1cm5JQXBpUmVzcG9uc2UiOiBmYWxzZSwgLy8gT3B0aW9uYWwuIERlZmF1bHQ9ZmFsc2UKICAicmVzcG9uc2VUeXBlT3ZlcnJpZGUiOiB7IC8vIE9wdGlvbmFsLiBEZWZhdWx0PXt9CiAgICAiRmlsZV9VcGxvYWQiOiAiSUFwaVJlc3BvbnNlIiwKICAgICJGaWxlX0Rvd25sb2FkIjogIlN5c3RlbS5OZXQuSHR0cC5IdHRwQ29udGVudCIKICB9LAogICJnZW5lcmF0ZU9wZXJhdGlvbkhlYWRlcnMiOiB0cnVlLCAvLyBPcHRpb25hbC4gRGVmYXVsdD10cnVlCiAgInR5cGVBY2Nlc3NpYmlsaXR5IjogIlB1YmxpYyIsIC8vIE9wdGlvbmFsLiBWYWx1ZXM9UHVibGljfEludGVybmFsLiBEZWZhdWx0PVB1YmxpYwogICJ1c2VDYW5jZWxsYXRpb25Ub2tlbnMiOiBmYWxzZSwgLy8gT3B0aW9uYWwuIERlZmF1bHQ9ZmFsc2UKICAidXNlSXNvRGF0ZUZvcm1hdCI6IGZhbHNlLCAvLyBPcHRpb25hbC4gRGVmYXVsdD1mYWxzZQogICJtdWx0aXBsZUludGVyZmFjZXMiOiAiQnlFbmRwb2ludCIsIC8vIE9wdGlvbmFsLiBNYXkgYmUgb25lIG9mICJCeUVuZHBvaW50IiBvciAiQnlUYWciCiAgImdlbmVyYXRlRGVwcmVjYXRlZE9wZXJhdGlvbnMiOiBmYWxzZSwgLy8gT3B0aW9uYWwuIERlZmF1bHQ9dHJ1ZQogICJvcGVyYXRpb25OYW1lVGVtcGxhdGUiOiAie29wZXJhdGlvbk5hbWV9QXN5bmMiLCAvLyBPcHRpb25hbC4gTXVzdCBjb250YWluIHtvcGVyYXRpb25OYW1lfSB3aGVuIG11bHRpcGxlSW50ZXJmYWNlcyAhPSBCeUVuZHBvaW50CiAgIm9wdGlvbmFsUGFyYW1ldGVycyI6IGZhbHNlLCAvLyBPcHRpb25hbC4gRGVmYXVsdD1mYWxzZQogICJvdXRwdXRGb2xkZXIiOiAiLi4vQ3VzdG9tT3V0cHV0IiAvLyBPcHRpb25hbC4gRGVmYXVsdD0uL0dlbmVyYXRlZAogICJvdXRwdXRGaWxlbmFtZSI6ICJSZWZpdEludGVyZmFjZS5jcyIsIC8vIE9wdGlvbmFsLiBEZWZhdWx0PU91dHB1dC5jcyBmb3IgQ0xJIHRvb2wKICAiYWRkaXRpb25hbE5hbWVzcGFjZXMiOiBbIC8vIE9wdGlvbmFsCiAgICAiTmFtZXNwYWNlMSIsCiAgICAiTmFtZXNwYWNlMiIKICBdLAogICJpbmNsdWRlVGFncyI6IFsgLy8gT3B0aW9uYWwuIE9wZW5BUEkgVGFnIHRvIGluY2x1ZGUgd2hlbiBnZW5lcmF0aW5nIGNvZGUKICAgICJQZXQiLAogICAgIlN0b3JlIiwKICAgICJVc2VyIgogIF0sCiAgImluY2x1ZGVQYXRoTWF0Y2hlcyI6IFsgLy8gT3B0aW9uYWwuIE9ubHkgaW5jbHVkZSBQYXRocyB0aGF0IG1hdGNoIHRoZSBwcm92aWRlZCByZWd1bGFyIGV4cHJlc3Npb24KICAgICJeL3BldC8uKiIsCiAgICAiXi9zdG9yZS8uKiIKICBdLAogICJ0cmltVW51c2VkU2NoZW1hIjogZmFsc2UsIC8vIE9wdGlvbmFsLiBEZWZhdWx0PWZhbHNlCiAgImtlZXBTY2hlbWFQYXR0ZXJucyI6IFsgLy8gT3B0aW9uYWwuIEZvcmNlIHRvIGtlZXAgbWF0Y2hpbmcgc2NoZW1hLCB1c2VzIHJlZ3VsYXIgZXhwcmVzc2lvbnMuIFVzZSB0b2dldGhlciB3aXRoIHRyaW1VbnVzZWRTY2hlbWE9dHJ1ZQogICAgIl5Nb2RlbCQiLAogICAgIl5QZXJzb24uKyIKICBdLAogICJnZW5lcmF0ZURlZmF1bHRBZGRpdGlvbmFsUHJvcGVydGllcyI6IHRydWUsIC8vIE9wdGlvbmFsLiBkZWZhdWx0PXRydWUKICAib3BlcmF0aW9uTmFtZUdlbmVyYXRvciI6ICJEZWZhdWx0IiwgLy8gT3B0aW9uYWwuIE1heSBiZSBvbmUgb2YgRGVmYXVsdCwgTXVsdGlwbGVDbGllbnRzRnJvbU9wZXJhdGlvbklkLCBNdWx0aXBsZUNsaWVudHNGcm9tUGF0aFNlZ21lbnRzLCBNdWx0aXBsZUNsaWVudHNGcm9tRmlyc3RUYWdBbmRPcGVyYXRpb25JZCwgTXVsdGlwbGVDbGllbnRzRnJvbUZpcnN0VGFnQW5kT3BlcmF0aW9uTmFtZSwgTXVsdGlwbGVDbGllbnRzRnJvbUZpcnN0VGFnQW5kUGF0aFNlZ21lbnRzLCBTaW5nbGVDbGllbnRGcm9tT3BlcmF0aW9uSWQsIFNpbmdsZUNsaWVudEZyb21QYXRoU2VnbWVudHMKICAiZGVwZW5kZW5jeUluamVjdGlvblNldHRpbmdzIjogeyAvLyBPcHRpb25hbAogICAgImJhc2VVcmwiOiAiaHR0cHM6Ly9wZXRzdG9yZTMuc3dhZ2dlci5pby9hcGkvdjMiLCAvLyBPcHRpb25hbC4gTGVhdmUgdGhpcyBibGFuayB0byBzZXQgdGhlIGJhc2UgYWRkcmVzcyBtYW51YWxseQogICAgImh0dHBNZXNzYWdlSGFuZGxlcnMiOiBbIC8vIE9wdGlvbmFsCiAgICAgICAgIkF1dGhvcml6YXRpb25NZXNzYWdlSGFuZGxlciIsIAogICAgICAgICJUZWxlbWV0cnlNZXNzYWdlSGFuZGxlciIgCiAgICBdLAogICAgInVzZVBvbGx5IjogdHJ1ZSwgLy8gREVQUkVDQVRFRCAtIFVzZSAidHJhbnNpZW50RXJyb3JIYW5kbGVyIjogIk5vbmV8UG9sbHl8SHR0cFJlc2lsaWVuY2UiIGluc3RlYWQKICAgICJ0cmFuc2llbnRFcnJvckhhbmRsZXIiOiAiSHR0cFJlc2lsaWVuY2UiLCAvLyBPcHRpb25hbC4gU2V0IHRoaXMgdG8gY29uZmlndXJlIHRyYW5zaWVudCBlcnJvciBoYW5kbGluZyB3aXRoIGEgcmV0cnkgcG9saWN5IHRoYXQgdXNlcyBhIGppdHRlcmVkIGJhY2tvZmYuIE1heSBiZSBvbmUgb2YgTm9uZSwgUG9sbHksIEh0dHBSZXNpbGllbmNlCiAgICAibWF4UmV0cnlDb3VudCI6IDMsIC8vIE9wdGlvbmFsLiBEZWZhdWx0PTYKICAgICJmaXJzdEJhY2tvZmZSZXRyeUluU2Vjb25kcyI6IDAuNSAvLyBPcHRpb25hbC4gRGVmYXVsdD0xLjAKICB9LAogICJjb2RlR2VuZXJhdG9yU2V0dGluZ3MiOiB7IC8vIE9wdGlvbmFsLiBEZWZhdWx0IHNldHRpbmdzIGFyZSB0aGUgdmFsdWVzIHNldCBpbiB0aGlzIGV4YW1wbGUKICAgICJyZXF1aXJlZFByb3BlcnRpZXNNdXN0QmVEZWZpbmVkIjogdHJ1ZSwKICAgICJnZW5lcmF0ZURhdGFBbm5vdGF0aW9ucyI6IHRydWUsCiAgICAiYW55VHlwZSI6ICJvYmplY3QiLAogICAgImRhdGVUeXBlIjogIlN5c3RlbS5EYXRlVGltZU9mZnNldCIsCiAgICAiZGF0ZVRpbWVUeXBlIjogIlN5c3RlbS5EYXRlVGltZU9mZnNldCIsCiAgICAidGltZVR5cGUiOiAiU3lzdGVtLlRpbWVTcGFuIiwKICAgICJ0aW1lU3BhblR5cGUiOiAiU3lzdGVtLlRpbWVTcGFuIiwKICAgICJhcnJheVR5cGUiOiAiU3lzdGVtLkNvbGxlY3Rpb25zLkdlbmVyaWMuSUNvbGxlY3Rpb24iLAogICAgImRpY3Rpb25hcnlUeXBlIjogIlN5c3RlbS5Db2xsZWN0aW9ucy5HZW5lcmljLklEaWN0aW9uYXJ5IiwKICAgICJhcnJheUluc3RhbmNlVHlwZSI6ICJTeXN0ZW0uQ29sbGVjdGlvbnMuT2JqZWN0TW9kZWwuQ29sbGVjdGlvbiIsCiAgICAiZGljdGlvbmFyeUluc3RhbmNlVHlwZSI6ICJTeXN0ZW0uQ29sbGVjdGlvbnMuR2VuZXJpYy5EaWN0aW9uYXJ5IiwKICAgICJhcnJheUJhc2VUeXBlIjogIlN5c3RlbS5Db2xsZWN0aW9ucy5PYmplY3RNb2RlbC5Db2xsZWN0aW9uIiwKICAgICJkaWN0aW9uYXJ5QmFzZVR5cGUiOiAiU3lzdGVtLkNvbGxlY3Rpb25zLkdlbmVyaWMuRGljdGlvbmFyeSIsCiAgICAicHJvcGVydHlTZXR0ZXJBY2Nlc3NNb2RpZmllciI6ICIiLAogICAgImdlbmVyYXRlSW1tdXRhYmxlQXJyYXlQcm9wZXJ0aWVzIjogZmFsc2UsCiAgICAiZ2VuZXJhdGVJbW11dGFibGVEaWN0aW9uYXJ5UHJvcGVydGllcyI6IGZhbHNlLAogICAgImhhbmRsZVJlZmVyZW5jZXMiOiBmYWxzZSwKICAgICJqc29uU2VyaWFsaXplclNldHRpbmdzVHJhbnNmb3JtYXRpb25NZXRob2QiOiBudWxsLAogICAgImdlbmVyYXRlSnNvbk1ldGhvZHMiOiBmYWxzZSwKICAgICJlbmZvcmNlRmxhZ0VudW1zIjogZmFsc2UsCiAgICAiaW5saW5lTmFtZWREaWN0aW9uYXJpZXMiOiBmYWxzZSwKICAgICJpbmxpbmVOYW1lZFR1cGxlcyI6IHRydWUsCiAgICAiaW5saW5lTmFtZWRBcnJheXMiOiBmYWxzZSwKICAgICJnZW5lcmF0ZU9wdGlvbmFsUHJvcGVydGllc0FzTnVsbGFibGUiOiBmYWxzZSwKICAgICJnZW5lcmF0ZU51bGxhYmxlUmVmZXJlbmNlVHlwZXMiOiBmYWxzZSwKICAgICJnZW5lcmF0ZU5hdGl2ZVJlY29yZHMiOiBmYWxzZSwKICAgICJnZW5lcmF0ZURlZmF1bHRWYWx1ZXMiOiB0cnVlLAogICAgImlubGluZU5hbWVkQW55IjogZmFsc2UsCiAgICAiZXhjbHVkZWRUeXBlTmFtZXMiOiBbCiAgICAgICJFeGNsdWRlZFR5cGVGb28iLAogICAgICAiRXhjbHVkZWRUeXBlQmFyIgogICAgXQogIH0KfQpgYGAKCi0gYG9wZW5BcGlQYXRoYCAtIHBvaW50cyB0byB0aGUgT3BlbkFQSSBTcGVjaWZpY2F0aW9ucyBmaWxlLiBUaGlzIGNhbiBiZSB0aGUgcGF0aCB0byBhIGZpbGUgc3RvcmVkIG9uIGRpc2ssIHJlbGF0aXZlIHRvIHRoZSBgLnJlZml0dGVyYCBmaWxlLiBUaGlzIGNhbiBhbHNvIGJlIGEgVVJMIHRvIGEgcmVtb3RlIGZpbGUgdGhhdCB3aWxsIGJlIGRvd25sb2FkZWQgb3ZlciBIVFRQL0hUVFBTCi0gYG5hbWVzcGFjZWAgLSB0aGUgbmFtZXNwYWNlIHVzZWQgaW4gdGhlIGdlbmVyYXRlZCBjb2RlLiBJZiBub3Qgc3BlY2lmaWVkLCB0aGlzIGRlZmF1bHRzIHRvIGBHZW5lcmF0ZWRDb2RlYAotIGBuYW1pbmcudXNlT3BlbkFwaVRpdGxlYCAtIGEgYm9vbGVhbiBpbmRpY2F0aW5nIHdoZXRoZXIgdGhlIE9wZW5BcGkgdGl0bGUgc2hvdWxkIGJlIHVzZWQuIERlZmF1bHQgaXMgYHRydWVgCi0gYG5hbWluZy5pbnRlcmZhY2VOYW1lYCAtIHRoZSBuYW1lIG9mIHRoZSBnZW5lcmF0ZWQgaW50ZXJmYWNlLiBUaGUgZ2VuZXJhdGVkIGNvZGUgd2lsbCBhdXRvbWF0aWNhbGx5IHByZWZpeCB0aGlzIHdpdGggYElgIHNvIGlmIHRoaXMgc2V0IHRvIGBNeUFwaUNsaWVudGAgdGhlbiB0aGUgZ2VuZXJhdGVkIGludGVyZmFjZSBpcyBjYWxsZWQgYElNeUFwaUNsaWVudGAuIERlZmF1bHQgaXMgYEFwaUNsaWVudGAKLSBgZ2VuZXJhdGVDb250cmFjdHNgIC0gYSBib29sZWFuIGluZGljYXRpbmcgd2hldGhlciBjb250cmFjdHMgc2hvdWxkIGJlIGdlbmVyYXRlZC4gQSB1c2UgY2FzZSBmb3IgdGhpcyBpcyBzZXZlcmFsIEFQSSBjbGllbnRzIHVzZSB0aGUgc2FtZSBjb250cmFjdHMuIERlZmF1bHQgaXMgYHRydWVgCi0gYGdlbmVyYXRlWG1sRG9jQ29kZUNvbW1lbnRzYCAtIGEgYm9vbGVhbiBpbmRpY2F0aW5nIHdoZXRoZXIgWE1MIGRvYyBjb21tZW50cyBzaG91bGQgYmUgZ2VuZXJhdGVkLiBEZWZhdWx0IGlzIGB0cnVlYAotIGBnZW5lcmF0ZVN0YXR1c0NvZGVDb21tZW50c2AgLSBhIGJvb2xlYW4gaW5kaWNhdGluZyB3aGV0aGVyIHRoZSBYTUwgZG9jcyBmb3IgYEFwaUV4Y2VwdGlvbmAgYW5kIGBJQXBpUmVzcG9uc2VgIGNvbnRhaW4gZGV0YWlsZWQgZGVzY3JpcHRpb25zIGZvciBldmVyeSBkb2N1bWVudGVkIHN0YXR1cyBjb2RlLiBEZWZhdWx0IGlzIGB0cnVlYAotIGBhZGRBdXRvR2VuZXJhdGVkSGVhZGVyYCAtIGEgYm9vbGVhbiBpbmRpY2F0aW5nIHdoZXRoZXIgWE1MIGRvYyBjb21tZW50cyBzaG91bGQgYmUgZ2VuZXJhdGVkLiBEZWZhdWx0IGlzIGB0cnVlYAotIGBhZGRBY2NlcHRIZWFkZXJzYCAtICBhIGJvb2xlYW4gaW5kaWNhdGluZyB3aGV0aGVyIHRvIGFkZCBhY2NlcHQgaGVhZGVycyBbSGVhZGVycygiQWNjZXB0OiBhcHBsaWNhdGlvbi9qc29uIildLiBEZWZhdWx0IGlzIGB0cnVlYAotIGByZXR1cm5JQXBpUmVzcG9uc2VgIC0gYSBib29sZWFuIGluZGljYXRpbmcgd2hldGhlciB0byByZXR1cm4gYElBcGlSZXNwb25zZTxUPmAgb2JqZWN0cy4gRGVmYXVsdCBpcyBgZmFsc2VgCi0gYHJlc3BvbnNlVHlwZU92ZXJyaWRlYCAtIGEgZGljdGlvbmFyeSB3aXRoIG9wZXJhdGlvbiBpZHMgKGFzIHNwZWNpZmllZCBpbiB0aGUgT3BlbkFQSSBkb2N1bWVudCkgYW5kIGEgcGFydGljdWxhciByZXR1cm4gdHlwZSB0byB1c2UuIFRoZSB0eXBlcyBhcmUgd3JhcHBlZCBpbiBhIHRhc2ssIGJ1dCBvdGhlcndpc2UgdW5tb2RpZmllZCAoc28gbWFrZSBzdXJlIHRvIHNwZWNpZnkgb3IgaW1wb3J0IHRoZWlyIG5hbWVzcGFjZXMpLiBEZWZhdWx0IGlzIGB7fWAKLSBgZ2VuZXJhdGVPcGVyYXRpb25IZWFkZXJzYCAtIGEgYm9vbGVhbiBpbmRpY2F0aW5nIHdoZXRoZXIgdG8gdXNlIG9wZXJhdGlvbiBoZWFkZXJzIGluIHRoZSBnZW5lcmF0ZWQgbWV0aG9kcy4gRGVmYXVsdCBpcyBgdHJ1ZWAKLSBgdHlwZUFjY2Vzc2liaWxpdHlgIC0gdGhlIGdlbmVyYXRlZCB0eXBlIGFjY2Vzc2liaWxpdHkuIFBvc3NpYmxlIHZhbHVlcyBhcmUgYFB1YmxpY2AgYW5kIGBJbnRlcm5hbGAuIERlZmF1bHQgaXMgYFB1YmxpY2AKLSBgdXNlQ2FuY2VsbGF0aW9uVG9rZW5zYCAtIFVzZSBjYW5jZWxsYXRpb24gdG9rZW5zIGluIHRoZSBnZW5lcmF0ZWQgbWV0aG9kcy4gRGVmYXVsdCBpcyBgZmFsc2VgCi0gYHVzZUlzb0RhdGVGb3JtYXRgIC0gU2V0IHRvIGB0cnVlYCB0byBleHBsaWNpdGx5IGZvcm1hdCBkYXRlIHF1ZXJ5IHN0cmluZyBwYXJhbWV0ZXJzIGluIElTTyA4NjAxIHN0YW5kYXJkIGRhdGUgZm9ybWF0IHVzaW5nIGRlbGltaXRlcnMgKGZvciBleGFtcGxlOiAyMDIzLTA2LTE1KS4gRGVmYXVsdCBpcyBgZmFsc2VgCi0gYG11bHRpcGxlSW50ZXJmYWNlc2AgLSBTZXQgdG8gYEJ5RW5kcG9pbnRgIHRvIGdlbmVyYXRlIGFuIGludGVyZmFjZSBmb3IgZWFjaCBlbmRwb2ludCwgb3IgYEJ5VGFnYCB0byBncm91cCBFbmRwb2ludHMgYnkgdGhlaXIgVGFnIChsaWtlIFN3YWdnZXJVSSBncm91cHMgdGhlbSkuCi0gYG91dHB1dEZvbGRlcmAgLSBhIHN0cmluZyBkZXNjcmliaW5nIGEgcmVsYXRpdmUgcGF0aCB0byBhIGRlc2lyZWQgb3V0cHV0IGZvbGRlci4gRGVmYXVsdCBpcyBgLi9HZW5lcmF0ZWRgCi0gYG91dHB1dEZpbGVuYW1lYCAtIE91dHB1dCBmaWxlbmFtZS4gRGVmYXVsdCBpcyBgT3V0cHV0LmNzYCB3aGVuIHVzZWQgZnJvbSB0aGUgQ0xJIHRvb2wsIG90aGVyd2lzZSBpdHMgdGhlIC5yZWZpdHRlciBmaWxlbmFtZS4gU28gYFBldHN0b3JlLnJlZml0dGVyYCBiZWNvbWVzIGBQZXRzdG9yZS5jc2AuCi0gYGFkZGl0aW9uYWxOYW1lc3BhY2VzYCAtIEEgY29sbGVjdGlvbiBvZiBhZGRpdGlvbmFsIG5hbWVzcGFjZXMgdG8gaW5jbHVkZSBpbiB0aGUgZ2VuZXJhdGVkIGZpbGUuIEEgdXNlIGNhc2UgZm9yIHRoaXMgaXMgd2hlbiB5b3Ugd2FudCB0byByZXVzZSBjb250cmFjdHMgZnJvbSBhIGRpZmZlcmVudCBuYW1lc3BhY2UgdGhhbiB0aGUgZ2VuZXJhdGVkIGNvZGUuIERlZmF1bHQgaXMgZW1wdHkKLSBgaW5jbHVkZVRhZ3NgIC0gQSBjb2xsZWN0aW9uIG9mIHRhZ3MgdG8gdXNlIGEgZmlsdGVyIGZvciBpbmNsdWRpbmcgZW5kcG9pbnRzIHRoYXQgY29udGFpbiB0aGlzIHRhZy4KLSBgaW5jbHVkZVBhdGhNYXRjaGVzYCAtIEEgY29sbGVjdGlvbiBvZiByZWd1bGFyIGV4cHJlc3Npb25zIHVzZWQgdG8gZmlsdGVyIHBhdGhzLgotIGBnZW5lcmF0ZURlcHJlY2F0ZWRPcGVyYXRpb25zYCAtIGEgYm9vbGVhbiBpbmRpY2F0aW5nIHdoZXRoZXIgZGVwcmVjYXRlZCBvcGVyYXRpb25zIHNob3VsZCBiZSBnZW5lcmF0ZWQgb3Igc2tpcHBlZC4gRGVmYXVsdCBpcyBgdHJ1ZWAKLSBgb3BlcmF0aW9uTmFtZVRlbXBsYXRlYCAtIEdlbmVyYXRlIG9wZXJhdGlvbiBuYW1lcyB1c2luZyBwYXR0ZXJuLiBUaGlzIG11c3QgY29udGFpbiB0aGUgc3RyaW5nIHtvcGVyYXRpb25OYW1lfS4gQW4gZXhhbXBsZSB1c2FnZSBvZiB0aGlzIGNvdWxkIGJlIGB7b3BlcmF0aW9uTmFtZX1Bc3luY2AgdG8gc3VmZml4IGFsbCBtZXRob2QgbmFtZXMgd2l0aCBBc3luYwotIGBvcHRpb25hbFBhcmFtZXRlcnNgIC0gR2VuZXJhdGUgbm9uLXJlcXVpcmVkIHBhcmFtZXRlcnMgYXMgbnVsbGFibGUgb3B0aW9uYWwgcGFyYW1ldGVycwotIGB0cmltVW51c2VkU2NoZW1hYCAtIFJlbW92ZXMgdW5yZWZlcmVuY2VkIGNvbXBvbmVudHMgc2NoZW1hIHRvIGtlZXAgdGhlIGdlbmVyYXRlZCBvdXRwdXQgdG8gYSBtaW5pbXVtCi0gYGtlZXBTY2hlbWFQYXR0ZXJuc2A6IEEgY29sbGVjdGlvbiBvZiByZWd1bGFyIGV4cHJlc3Npb25zIHRvIGZvcmNlIHRvIGtlZXAgbWF0Y2hpbmcgc2NoZW1hLiBUaGlzIGlzIHVzZWQgdG9nZXRoZXIgd2l0aCBgdHJpbVVudXNlZFNjaGVtYWAKLSBgZ2VuZXJhdGVEZWZhdWx0QWRkaXRpb25hbFByb3BlcnRpZXNgOiBTZXQgdG8gYGZhbHNlYCB0byBza2lwIGRlZmF1bHQgYWRkaXRpb25hbCBwcm9wZXJ0aWVzLiBEZWZhdWx0IGlzIGB0cnVlYAotIGBvcGVyYXRpb25OYW1lR2VuZXJhdG9yYDogVGhlIE5Td2FnIGBJT3BlcmF0aW9uTmFtZUdlbmVyYXRvcmAgaW1wbGVtZW50YXRpb24gdG8gdXNlLiBTZWUgaHR0cHM6Ly9yZWZpdHRlci5naXRodWIuaW8vYXBpL1JlZml0dGVyLkNvcmUuT3BlcmF0aW9uTmFtZUdlbmVyYXRvclR5cGVzLmh0bWwKLSBgZGVwZW5kZW5jeUluamVjdGlvblNldHRpbmdzYCAtIFNldHRpbmcgdGhpcyB3aWxsIGdlbmVyYXRlZCBleHRlbnNpb24gbWV0aG9kcyB0byBgSVNlcnZpY2VDb2xsZWN0aW9uYCBmb3IgY29uZmlndXJpbmcgUmVmaXQgY2xpZW50cwogIC0gYGJhc2VVcmxgIC0gVXNlZCBhcyB0aGUgSHR0cENsaWVudCBiYXNlIGFkZHJlc3MuIExlYXZlIHRoaXMgYmxhbmsgdG8gbWFudWFsbHkgc2V0IHRoZSBiYXNlIFVSTAogIC0gYGh0dHBNZXNzYWdlSGFuZGxlcnNgIC0gQSBjb2xsZWN0aW9uIG9mIGBIdHRwTWVzc2FnZUhhbmRsZXJgIHRoYXQgaXMgYWRkZWQgdG8gdGhlIEh0dHBDbGllbnQgcGlwZWxpbmUKICAtIGB1c2VQb2xseWAgLSAoREVQUkVDQVRFRCkgU2V0IHRoaXMgdG8gdHJ1ZSB0byBjb25maWd1cmUgdGhlIEh0dHBDbGllbnQgdG8gdXNlIFBvbGx5IHVzaW5nIGEgcmV0cnkgcG9saWN5IHdpdGggYSBqaXR0ZXJlZCBiYWNrb2ZmCiAgLSBgdHJhbnNpZW50RXJyb3JIYW5kbGVyYDogU2V0IHRoaXMgdG8gY29uZmlndXJlIHRyYW5zaWVudCBlcnJvciBoYW5kbGluZyB3aXRoIGEgcmV0cnkgcG9saWN5IHRoYXQgdXNlcyBhIGppdHRlcmVkIGJhY2tvZmYuIFNlZSBodHRwczovL3JlZml0dGVyLmdpdGh1Yi5pby9hcGkvUmVmaXR0ZXIuQ29yZS5UcmFuc2llbnRFcnJvckhhbmRsZXIuaHRtbAogIC0gYGZpcnN0QmFja29mZlJldHJ5SW5TZWNvbmRzYCAtIFRoaXMgaXMgdGhlIGR1cmF0aW9uIG9mIHRoZSBpbml0aWFsIHJldHJ5IGJhY2tvZmYuIERlZmF1bHQgaXMgMSBzZWNvbmQKLSBgY29kZUdlbmVyYXRvclNldHRpbmdzYCAtIFNldHRpbmcgdGhpcyBhbGxvd3MgY3VzdG9taXphdGlvbiBvZiB0aGUgTlN3YWcgZ2VuZXJhdGVkIHR5cGVzIGFuZCBjb250cmFjdHMKICAtIGByZXF1aXJlZFByb3BlcnRpZXNNdXN0QmVEZWZpbmVkYCAtIERlZmF1bHQgaXMgdHJ1ZSwKICAtIGBnZW5lcmF0ZURhdGFBbm5vdGF0aW9uc2AgLSBEZWZhdWx0IGlzIHRydWUsCiAgLSBgYW55VHlwZWAgLSBEZWZhdWx0IGlzIGBvYmplY3RgLAogIC0gYGRhdGVUeXBlYCAtIERlZmF1bHQgaXMgYFN5c3RlbS5EYXRlVGltZU9mZnNldGAsCiAgLSBgZGF0ZVRpbWVUeXBlYCAtIERlZmF1bHQgaXMgYFN5c3RlbS5EYXRlVGltZU9mZnNldGAsCiAgLSBgdGltZVR5cGVgIC0gRGVmYXVsdCBpcyBgU3lzdGVtLlRpbWVTcGFuYCwKICAtIGB0aW1lU3BhblR5cGVgIC0gRGVmYXVsdCBpcyBgU3lzdGVtLlRpbWVTcGFuYCwKICAtIGBhcnJheVR5cGVgIC0gRGVmYXVsdCBpcyBgU3lzdGVtLkNvbGxlY3Rpb25zLkdlbmVyaWMuSUNvbGxlY3Rpb25gLAogIC0gYGRpY3Rpb25hcnlUeXBlYCAtIERlZmF1bHQgaXMgYFN5c3RlbS5Db2xsZWN0aW9ucy5HZW5lcmljLklEaWN0aW9uYXJ5YCwKICAtIGBhcnJheUluc3RhbmNlVHlwZWAgLSBEZWZhdWx0IGlzIGBTeXN0ZW0uQ29sbGVjdGlvbnMuT2JqZWN0TW9kZWwuQ29sbGVjdGlvbmAsCiAgLSBgZGljdGlvbmFyeUluc3RhbmNlVHlwZWAgLSBEZWZhdWx0IGlzIGBTeXN0ZW0uQ29sbGVjdGlvbnMuR2VuZXJpYy5EaWN0aW9uYXJ5YCwKICAtIGBhcnJheUJhc2VUeXBlYCAtIERlZmF1bHQgaXMgYFN5c3RlbS5Db2xsZWN0aW9ucy5PYmplY3RNb2RlbC5Db2xsZWN0aW9uYCwKICAtIGBkaWN0aW9uYXJ5QmFzZVR5cGVgIC0gRGVmYXVsdCBpcyBgU3lzdGVtLkNvbGxlY3Rpb25zLkdlbmVyaWMuRGljdGlvbmFyeWAsCiAgLSBgcHJvcGVydHlTZXR0ZXJBY2Nlc3NNb2RpZmllcmAgLSBEZWZhdWx0IGlzIGBgLAogIC0gYGdlbmVyYXRlSW1tdXRhYmxlQXJyYXlQcm9wZXJ0aWVzYCAtIERlZmF1bHQgaXMgZmFsc2UsCiAgLSBgZ2VuZXJhdGVJbW11dGFibGVEaWN0aW9uYXJ5UHJvcGVydGllc2AgLSBEZWZhdWx0IGlzIGZhbHNlLAogIC0gYGhhbmRsZVJlZmVyZW5jZXNgIC0gRGVmYXVsdCBpcyBmYWxzZSwKICAtIGBqc29uU2VyaWFsaXplclNldHRpbmdzVHJhbnNmb3JtYXRpb25NZXRob2RgIC0gRGVmYXVsdCBpcyBudWxsLAogIC0gYGdlbmVyYXRlSnNvbk1ldGhvZHNgIC0gRGVmYXVsdCBpcyBmYWxzZSwKICAtIGBlbmZvcmNlRmxhZ0VudW1zYCAtIERlZmF1bHQgaXMgZmFsc2UsCiAgLSBgaW5saW5lTmFtZWREaWN0aW9uYXJpZXNgIC0gRGVmYXVsdCBpcyBmYWxzZSwKICAtIGBpbmxpbmVOYW1lZFR1cGxlc2AgLSBEZWZhdWx0IGlzIHRydWUsCiAgLSBgaW5saW5lTmFtZWRBcnJheXNgIC0gRGVmYXVsdCBpcyBmYWxzZSwKICAtIGBnZW5lcmF0ZU9wdGlvbmFsUHJvcGVydGllc0FzTnVsbGFibGVgIC0gRGVmYXVsdCBpcyBmYWxzZSwKICAtIGBnZW5lcmF0ZU51bGxhYmxlUmVmZXJlbmNlVHlwZXNgIC0gRGVmYXVsdCBpcyBmYWxzZSwKICAtIGBnZW5lcmF0ZU5hdGl2ZVJlY29yZHNgIC0gRGVmYXVsdCBpcyBmYWxzZQogIC0gYGdlbmVyYXRlRGVmYXVsdFZhbHVlc2AgLSBEZWZhdWx0IGlzIHRydWUKICAtIGBpbmxpbmVOYW1lZEFueWAgLSBEZWZhdWx0IGlzIGZhbHNlCiAgLSBgZXhjbHVkZWRUeXBlTmFtZXNgIC0gRGVmYXVsdCBpcyBlbXB0eQoKCiMgVXNpbmcgdGhlIGdlbmVyYXRlZCBjb2RlCgpIZXJlJ3MgYW4gZXhhbXBsZSBnZW5lcmF0ZWQgb3V0cHV0IGZyb20gdGhlIFtTd2FnZ2VyIFBldHN0b3JlIGV4YW1wbGVdKGh0dHBzOi8vcGV0c3RvcmUzLnN3YWdnZXIuaW8pIHVzaW5nIHRoZSBkZWZhdWx0IHNldHRpbmdzCgoqKkNMSSBUb29sKioKCmBgYGJhc2gKJCByZWZpdHRlciAuL29wZW5hcGkuanNvbiAtLW5hbWVzcGFjZSAiWW91ci5OYW1lc3BhY2UuT2YuQ2hvaWNlLkdlbmVyYXRlZENvZGUiCmBgYAoKKipTb3VyY2UgR2VuZXJhdG9yICoqKi5yZWZpdHRlcioqKiBmaWxlKioKCmBgYGpzb24KewogICJvcGVuQXBpUGF0aCI6ICIuL29wZW5hcGkuanNvbiIsCiAgIm5hbWVzcGFjZSI6ICJZb3VyLk5hbWVzcGFjZS5PZi5DaG9pY2UuR2VuZXJhdGVkQ29kZSIKfQpgYGAKCioqT3V0cHV0KioKCmBgYGNzCnVzaW5nIFJlZml0Owp1c2luZyBTeXN0ZW0uQ29sbGVjdGlvbnMuR2VuZXJpYzsKdXNpbmcgU3lzdGVtLlRleHQuSnNvbi5TZXJpYWxpemF0aW9uOwp1c2luZyBTeXN0ZW0uVGhyZWFkaW5nLlRhc2tzOwoKbmFtZXNwYWNlIFlvdXIuTmFtZXNwYWNlLk9mLkNob2ljZS5HZW5lcmF0ZWRDb2RlCnsKICAgIFtTeXN0ZW0uQ29kZURvbS5Db21waWxlci5HZW5lcmF0ZWRDb2RlKCJSZWZpdHRlciIsICIxLjAuMC4wIildCiAgICBwdWJsaWMgcGFydGlhbCBpbnRlcmZhY2UgSVN3YWdnZXJQZXRzdG9yZQogICAgewogICAgICAgIC8vLyA8c3VtbWFyeT5VcGRhdGUgYW4gZXhpc3RpbmcgcGV0PC9zdW1tYXJ5PgogICAgICAgIC8vLyA8cmVtYXJrcz5VcGRhdGUgYW4gZXhpc3RpbmcgcGV0IGJ5IElkPC9yZW1hcmtzPgogICAgICAgIC8vLyA8cGFyYW0gbmFtZT0iYm9keSI+VXBkYXRlIGFuIGV4aXN0ZW50IHBldCBpbiB0aGUgc3RvcmU8L3BhcmFtPgogICAgICAgIC8vLyA8cmV0dXJucz5TdWNjZXNzZnVsIG9wZXJhdGlvbjwvcmV0dXJucz4KICAgICAgICAvLy8gPGV4Y2VwdGlvbiBjcmVmPSJBcGlFeGNlcHRpb24iPgogICAgICAgIC8vLyBUaHJvd24gd2hlbiB0aGUgcmVxdWVzdCByZXR1cm5zIGEgbm9uLXN1Y2Nlc3Mgc3RhdHVzIGNvZGU6CiAgICAgICAgLy8vIDxsaXN0IHR5cGU9InRhYmxlIj4KICAgICAgICAvLy8gPGxpc3RoZWFkZXI+CiAgICAgICAgLy8vIDx0ZXJtPlN0YXR1czwvdGVybT4KICAgICAgICAvLy8gPGRlc2NyaXB0aW9uPkRlc2NyaXB0aW9uPC9kZXNjcmlwdGlvbj4KICAgICAgICAvLy8gPC9saXN0aGVhZGVyPgogICAgICAgIC8vLyA8aXRlbT4KICAgICAgICAvLy8gPHRlcm0+NDAwPC90ZXJtPgogICAgICAgIC8vLyA8ZGVzY3JpcHRpb24+SW52YWxpZCBJRCBzdXBwbGllZDwvZGVzY3JpcHRpb24+CiAgICAgICAgLy8vIDwvaXRlbT4KICAgICAgICAvLy8gPGl0ZW0+CiAgICAgICAgLy8vIDx0ZXJtPjQwNDwvdGVybT4KICAgICAgICAvLy8gPGRlc2NyaXB0aW9uPlBldCBub3QgZm91bmQ8L2Rlc2NyaXB0aW9uPgogICAgICAgIC8vLyA8L2l0ZW0+CiAgICAgICAgLy8vIDxpdGVtPgogICAgICAgIC8vLyA8dGVybT40MDU8L3Rlcm0+CiAgICAgICAgLy8vIDxkZXNjcmlwdGlvbj5WYWxpZGF0aW9uIGV4Y2VwdGlvbjwvZGVzY3JpcHRpb24+CiAgICAgICAgLy8vIDwvaXRlbT4KICAgICAgICAvLy8gPC9saXN0PgogICAgICAgIC8vLyA8L2V4Y2VwdGlvbj4KICAgICAgICBbSGVhZGVycygiQWNjZXB0OiBhcHBsaWNhdGlvbi94bWwsIGFwcGxpY2F0aW9uL2pzb24iKV0KICAgICAgICBbUHV0KCIvcGV0IildCiAgICAgICAgVGFzazxQZXQ+IFVwZGF0ZVBldChbQm9keV0gUGV0IGJvZHkpOwoKICAgICAgICAvLy8gPHN1bW1hcnk+QWRkIGEgbmV3IHBldCB0byB0aGUgc3RvcmU8L3N1bW1hcnk+CiAgICAgICAgLy8vIDxyZW1hcmtzPkFkZCBhIG5ldyBwZXQgdG8gdGhlIHN0b3JlPC9yZW1hcmtzPgogICAgICAgIC8vLyA8cGFyYW0gbmFtZT0iYm9keSI+Q3JlYXRlIGEgbmV3IHBldCBpbiB0aGUgc3RvcmU8L3BhcmFtPgogICAgICAgIC8vLyA8cmV0dXJucz5TdWNjZXNzZnVsIG9wZXJhdGlvbjwvcmV0dXJucz4KICAgICAgICAvLy8gPGV4Y2VwdGlvbiBjcmVmPSJBcGlFeGNlcHRpb24iPgogICAgICAgIC8vLyBUaHJvd24gd2hlbiB0aGUgcmVxdWVzdCByZXR1cm5zIGEgbm9uLXN1Y2Nlc3Mgc3RhdHVzIGNvZGU6CiAgICAgICAgLy8vIDxsaXN0IHR5cGU9InRhYmxlIj4KICAgICAgICAvLy8gPGxpc3RoZWFkZXI+CiAgICAgICAgLy8vIDx0ZXJtPlN0YXR1czwvdGVybT4KICAgICAgICAvLy8gPGRlc2NyaXB0aW9uPkRlc2NyaXB0aW9uPC9kZXNjcmlwdGlvbj4KICAgICAgICAvLy8gPC9saXN0aGVhZGVyPgogICAgICAgIC8vLyA8aXRlbT4KICAgICAgICAvLy8gPHRlcm0+NDA1PC90ZXJtPgogICAgICAgIC8vLyA8ZGVzY3JpcHRpb24+SW52YWxpZCBpbnB1dDwvZGVzY3JpcHRpb24+CiAgICAgICAgLy8vIDwvaXRlbT4KICAgICAgICAvLy8gPC9saXN0PgogICAgICAgIC8vLyA8L2V4Y2VwdGlvbj4KICAgICAgICBbSGVhZGVycygiQWNjZXB0OiBhcHBsaWNhdGlvbi94bWwsIGFwcGxpY2F0aW9uL2pzb24iKV0KICAgICAgICBbUG9zdCgiL3BldCIpXQogICAgICAgIFRhc2s8UGV0PiBBZGRQZXQoW0JvZHldIFBldCBib2R5KTsKCiAgICAgICAgLy8vIDxzdW1tYXJ5PkZpbmRzIFBldHMgYnkgc3RhdHVzPC9zdW1tYXJ5PgogICAgICAgIC8vLyA8cmVtYXJrcz5NdWx0aXBsZSBzdGF0dXMgdmFsdWVzIGNhbiBiZSBwcm92aWRlZCB3aXRoIGNvbW1hIHNlcGFyYXRlZCBzdHJpbmdzPC9yZW1hcmtzPgogICAgICAgIC8vLyA8cGFyYW0gbmFtZT0ic3RhdHVzIj5TdGF0dXMgdmFsdWVzIHRoYXQgbmVlZCB0byBiZSBjb25zaWRlcmVkIGZvciBmaWx0ZXI8L3BhcmFtPgogICAgICAgIC8vLyA8cmV0dXJucz5zdWNjZXNzZnVsIG9wZXJhdGlvbjwvcmV0dXJucz4KICAgICAgICAvLy8gPGV4Y2VwdGlvbiBjcmVmPSJBcGlFeGNlcHRpb24iPgogICAgICAgIC8vLyBUaHJvd24gd2hlbiB0aGUgcmVxdWVzdCByZXR1cm5zIGEgbm9uLXN1Y2Nlc3Mgc3RhdHVzIGNvZGU6CiAgICAgICAgLy8vIDxsaXN0IHR5cGU9InRhYmxlIj4KICAgICAgICAvLy8gPGxpc3RoZWFkZXI+CiAgICAgICAgLy8vIDx0ZXJtPlN0YXR1czwvdGVybT4KICAgICAgICAvLy8gPGRlc2NyaXB0aW9uPkRlc2NyaXB0aW9uPC9kZXNjcmlwdGlvbj4KICAgICAgICAvLy8gPC9saXN0aGVhZGVyPgogICAgICAgIC8vLyA8aXRlbT4KICAgICAgICAvLy8gPHRlcm0+NDAwPC90ZXJtPgogICAgICAgIC8vLyA8ZGVzY3JpcHRpb24+SW52YWxpZCBzdGF0dXMgdmFsdWU8L2Rlc2NyaXB0aW9uPgogICAgICAgIC8vLyA8L2l0ZW0+CiAgICAgICAgLy8vIDwvbGlzdD4KICAgICAgICAvLy8gPC9leGNlcHRpb24+CiAgICAgICAgW0hlYWRlcnMoIkFjY2VwdDogYXBwbGljYXRpb24vanNvbiIpXQogICAgICAgIFtHZXQoIi9wZXQvZmluZEJ5U3RhdHVzIildCiAgICAgICAgVGFzazxJQ29sbGVjdGlvbjxQZXQ+PiBGaW5kUGV0c0J5U3RhdHVzKFtRdWVyeV0gU3RhdHVzPyBzdGF0dXMpOwoKICAgICAgICAvLy8gPHN1bW1hcnk+RmluZHMgUGV0cyBieSB0YWdzPC9zdW1tYXJ5PgogICAgICAgIC8vLyA8cmVtYXJrcz5NdWx0aXBsZSB0YWdzIGNhbiBiZSBwcm92aWRlZCB3aXRoIGNvbW1hIHNlcGFyYXRlZCBzdHJpbmdzLiBVc2UgdGFnMSwgdGFnMiwgdGFnMyBmb3IgdGVzdGluZy48L3JlbWFya3M+CiAgICAgICAgLy8vIDxwYXJhbSBuYW1lPSJ0YWdzIj5UYWdzIHRvIGZpbHRlciBieTwvcGFyYW0+CiAgICAgICAgLy8vIDxyZXR1cm5zPnN1Y2Nlc3NmdWwgb3BlcmF0aW9uPC9yZXR1cm5zPgogICAgICAgIC8vLyA8ZXhjZXB0aW9uIGNyZWY9IkFwaUV4Y2VwdGlvbiI+CiAgICAgICAgLy8vIFRocm93biB3aGVuIHRoZSByZXF1ZXN0IHJldHVybnMgYSBub24tc3VjY2VzcyBzdGF0dXMgY29kZToKICAgICAgICAvLy8gPGxpc3QgdHlwZT0idGFibGUiPgogICAgICAgIC8vLyA8bGlzdGhlYWRlcj4KICAgICAgICAvLy8gPHRlcm0+U3RhdHVzPC90ZXJtPgogICAgICAgIC8vLyA8ZGVzY3JpcHRpb24+RGVzY3JpcHRpb248L2Rlc2NyaXB0aW9uPgogICAgICAgIC8vLyA8L2xpc3RoZWFkZXI+CiAgICAgICAgLy8vIDxpdGVtPgogICAgICAgIC8vLyA8dGVybT40MDA8L3Rlcm0+CiAgICAgICAgLy8vIDxkZXNjcmlwdGlvbj5JbnZhbGlkIHRhZyB2YWx1ZTwvZGVzY3JpcHRpb24+CiAgICAgICAgLy8vIDwvaXRlbT4KICAgICAgICAvLy8gPC9saXN0PgogICAgICAgIC8vLyA8L2V4Y2VwdGlvbj4KICAgICAgICBbSGVhZGVycygiQWNjZXB0OiBhcHBsaWNhdGlvbi9qc29uIildCiAgICAgICAgW0dldCgiL3BldC9maW5kQnlUYWdzIildCiAgICAgICAgVGFzazxJQ29sbGVjdGlvbjxQZXQ+PiBGaW5kUGV0c0J5VGFncyhbUXVlcnkoQ29sbGVjdGlvbkZvcm1hdC5NdWx0aSldIElFbnVtZXJhYmxlPHN0cmluZz4gdGFncyk7CgogICAgICAgIC8vLyA8c3VtbWFyeT5GaW5kIHBldCBieSBJRDwvc3VtbWFyeT4KICAgICAgICAvLy8gPHJlbWFya3M+UmV0dXJucyBhIHNpbmdsZSBwZXQ8L3JlbWFya3M+CiAgICAgICAgLy8vIDxwYXJhbSBuYW1lPSJwZXRJZCI+SUQgb2YgcGV0IHRvIHJldHVybjwvcGFyYW0+CiAgICAgICAgLy8vIDxyZXR1cm5zPnN1Y2Nlc3NmdWwgb3BlcmF0aW9uPC9yZXR1cm5zPgogICAgICAgIC8vLyA8ZXhjZXB0aW9uIGNyZWY9IkFwaUV4Y2VwdGlvbiI+CiAgICAgICAgLy8vIFRocm93biB3aGVuIHRoZSByZXF1ZXN0IHJldHVybnMgYSBub24tc3VjY2VzcyBzdGF0dXMgY29kZToKICAgICAgICAvLy8gPGxpc3QgdHlwZT0idGFibGUiPgogICAgICAgIC8vLyA8bGlzdGhlYWRlcj4KICAgICAgICAvLy8gPHRlcm0+U3RhdHVzPC90ZXJtPgogICAgICAgIC8vLyA8ZGVzY3JpcHRpb24+RGVzY3JpcHRpb248L2Rlc2NyaXB0aW9uPgogICAgICAgIC8vLyA8L2xpc3RoZWFkZXI+CiAgICAgICAgLy8vIDxpdGVtPgogICAgICAgIC8vLyA8dGVybT40MDA8L3Rlcm0+CiAgICAgICAgLy8vIDxkZXNjcmlwdGlvbj5JbnZhbGlkIElEIHN1cHBsaWVkPC9kZXNjcmlwdGlvbj4KICAgICAgICAvLy8gPC9pdGVtPgogICAgICAgIC8vLyA8aXRlbT4KICAgICAgICAvLy8gPHRlcm0+NDA0PC90ZXJtPgogICAgICAgIC8vLyA8ZGVzY3JpcHRpb24+UGV0IG5vdCBmb3VuZDwvZGVzY3JpcHRpb24+CiAgICAgICAgLy8vIDwvaXRlbT4KICAgICAgICAvLy8gPC9saXN0PgogICAgICAgIC8vLyA8L2V4Y2VwdGlvbj4KICAgICAgICBbSGVhZGVycygiQWNjZXB0OiBhcHBsaWNhdGlvbi94bWwsIGFwcGxpY2F0aW9uL2pzb24iKV0KICAgICAgICBbR2V0KCIvcGV0L3twZXRJZH0iKV0KICAgICAgICBUYXNrPFBldD4gR2V0UGV0QnlJZChsb25nIHBldElkKTsKCiAgICAgICAgLy8vIDxzdW1tYXJ5PlVwZGF0ZXMgYSBwZXQgaW4gdGhlIHN0b3JlIHdpdGggZm9ybSBkYXRhPC9zdW1tYXJ5PgogICAgICAgIC8vLyA8cGFyYW0gbmFtZT0icGV0SWQiPklEIG9mIHBldCB0aGF0IG5lZWRzIHRvIGJlIHVwZGF0ZWQ8L3BhcmFtPgogICAgICAgIC8vLyA8cGFyYW0gbmFtZT0ibmFtZSI+TmFtZSBvZiBwZXQgdGhhdCBuZWVkcyB0byBiZSB1cGRhdGVkPC9wYXJhbT4KICAgICAgICAvLy8gPHBhcmFtIG5hbWU9InN0YXR1cyI+U3RhdHVzIG9mIHBldCB0aGF0IG5lZWRzIHRvIGJlIHVwZGF0ZWQ8L3BhcmFtPgogICAgICAgIC8vLyA8cmV0dXJucz5BIDxzZWUgY3JlZj0iVGFzayIvPiB0aGF0IGNvbXBsZXRlcyB3aGVuIHRoZSByZXF1ZXN0IGlzIGZpbmlzaGVkLjwvcmV0dXJucz4KICAgICAgICAvLy8gPGV4Y2VwdGlvbiBjcmVmPSJBcGlFeGNlcHRpb24iPgogICAgICAgIC8vLyBUaHJvd24gd2hlbiB0aGUgcmVxdWVzdCByZXR1cm5zIGEgbm9uLXN1Y2Nlc3Mgc3RhdHVzIGNvZGU6CiAgICAgICAgLy8vIDxsaXN0IHR5cGU9InRhYmxlIj4KICAgICAgICAvLy8gPGxpc3RoZWFkZXI+CiAgICAgICAgLy8vIDx0ZXJtPlN0YXR1czwvdGVybT4KICAgICAgICAvLy8gPGRlc2NyaXB0aW9uPkRlc2NyaXB0aW9uPC9kZXNjcmlwdGlvbj4KICAgICAgICAvLy8gPC9saXN0aGVhZGVyPgogICAgICAgIC8vLyA8aXRlbT4KICAgICAgICAvLy8gPHRlcm0+NDA1PC90ZXJtPgogICAgICAgIC8vLyA8ZGVzY3JpcHRpb24+SW52YWxpZCBpbnB1dDwvZGVzY3JpcHRpb24+CiAgICAgICAgLy8vIDwvaXRlbT4KICAgICAgICAvLy8gPC9saXN0PgogICAgICAgIC8vLyA8L2V4Y2VwdGlvbj4KICAgICAgICBbUG9zdCgiL3BldC97cGV0SWR9IildCiAgICAgICAgVGFzayBVcGRhdGVQZXRXaXRoRm9ybShsb25nIHBldElkLCBbUXVlcnldIHN0cmluZyBuYW1lLCBbUXVlcnldIHN0cmluZyBzdGF0dXMpOwoKICAgICAgICAvLy8gPHN1bW1hcnk+RGVsZXRlcyBhIHBldDwvc3VtbWFyeT4KICAgICAgICAvLy8gPHBhcmFtIG5hbWU9InBldElkIj5QZXQgaWQgdG8gZGVsZXRlPC9wYXJhbT4KICAgICAgICAvLy8gPHJldHVybnM+QSA8c2VlIGNyZWY9IlRhc2siLz4gdGhhdCBjb21wbGV0ZXMgd2hlbiB0aGUgcmVxdWVzdCBpcyBmaW5pc2hlZC48L3JldHVybnM+CiAgICAgICAgLy8vIDxleGNlcHRpb24gY3JlZj0iQXBpRXhjZXB0aW9uIj4KICAgICAgICAvLy8gVGhyb3duIHdoZW4gdGhlIHJlcXVlc3QgcmV0dXJucyBhIG5vbi1zdWNjZXNzIHN0YXR1cyBjb2RlOgogICAgICAgIC8vLyA8bGlzdCB0eXBlPSJ0YWJsZSI+CiAgICAgICAgLy8vIDxsaXN0aGVhZGVyPgogICAgICAgIC8vLyA8dGVybT5TdGF0dXM8L3Rlcm0+CiAgICAgICAgLy8vIDxkZXNjcmlwdGlvbj5EZXNjcmlwdGlvbjwvZGVzY3JpcHRpb24+CiAgICAgICAgLy8vIDwvbGlzdGhlYWRlcj4KICAgICAgICAvLy8gPGl0ZW0+CiAgICAgICAgLy8vIDx0ZXJtPjQwMDwvdGVybT4KICAgICAgICAvLy8gPGRlc2NyaXB0aW9uPkludmFsaWQgcGV0IHZhbHVlPC9kZXNjcmlwdGlvbj4KICAgICAgICAvLy8gPC9pdGVtPgogICAgICAgIC8vLyA8L2xpc3Q+CiAgICAgICAgLy8vIDwvZXhjZXB0aW9uPgogICAgICAgIFtEZWxldGUoIi9wZXQve3BldElkfSIpXQogICAgICAgIFRhc2sgRGVsZXRlUGV0KGxvbmcgcGV0SWQsIFtIZWFkZXIoImFwaV9rZXkiKV0gc3RyaW5nIGFwaV9rZXkpOwoKICAgICAgICAvLy8gPHN1bW1hcnk+dXBsb2FkcyBhbiBpbWFnZTwvc3VtbWFyeT4KICAgICAgICAvLy8gPHBhcmFtIG5hbWU9InBldElkIj5JRCBvZiBwZXQgdG8gdXBkYXRlPC9wYXJhbT4KICAgICAgICAvLy8gPHBhcmFtIG5hbWU9ImFkZGl0aW9uYWxNZXRhZGF0YSI+QWRkaXRpb25hbCBNZXRhZGF0YTwvcGFyYW0+CiAgICAgICAgLy8vIDxyZXR1cm5zPgogICAgICAgIC8vLyBBIDxzZWUgY3JlZj0iVGFzayIvPiByZXByZXNlbnRpbmcgdGhlIDxzZWUgY3JlZj0iSUFwaVJlc3BvbnNlIi8+IGluc3RhbmNlIGNvbnRhaW5pbmcgdGhlIHJlc3VsdDoKICAgICAgICAvLy8gPGxpc3QgdHlwZT0idGFibGUiPgogICAgICAgIC8vLyA8bGlzdGhlYWRlcj4KICAgICAgICAvLy8gPHRlcm0+U3RhdHVzPC90ZXJtPgogICAgICAgIC8vLyA8ZGVzY3JpcHRpb24+RGVzY3JpcHRpb248L2Rlc2NyaXB0aW9uPgogICAgICAgIC8vLyA8L2xpc3RoZWFkZXI+CiAgICAgICAgLy8vIDxpdGVtPgogICAgICAgIC8vLyA8dGVybT4yMDA8L3Rlcm0+CiAgICAgICAgLy8vIDxkZXNjcmlwdGlvbj5zdWNjZXNzZnVsIG9wZXJhdGlvbjwvZGVzY3JpcHRpb24+CiAgICAgICAgLy8vIDwvaXRlbT4KICAgICAgICAvLy8gPC9saXN0PgogICAgICAgIC8vLyA8L3JldHVybnM+CiAgICAgICAgW0hlYWRlcnMoIkFjY2VwdDogYXBwbGljYXRpb24vanNvbiIpXQogICAgICAgIFtQb3N0KCIvcGV0L3twZXRJZH0vdXBsb2FkSW1hZ2UiKV0KICAgICAgICBUYXNrPEFwaVJlc3BvbnNlPiBVcGxvYWRGaWxlKGxvbmcgcGV0SWQsIFtRdWVyeV0gc3RyaW5nIGFkZGl0aW9uYWxNZXRhZGF0YSwgIFN0cmVhbVBhcnQgYm9keSk7CgogICAgICAgIC8vLyA8c3VtbWFyeT5SZXR1cm5zIHBldCBpbnZlbnRvcmllcyBieSBzdGF0dXM8L3N1bW1hcnk+CiAgICAgICAgLy8vIDxyZW1hcmtzPlJldHVybnMgYSBtYXAgb2Ygc3RhdHVzIGNvZGVzIHRvIHF1YW50aXRpZXM8L3JlbWFya3M+CiAgICAgICAgLy8vIDxyZXR1cm5zPnN1Y2Nlc3NmdWwgb3BlcmF0aW9uPC9yZXR1cm5zPgogICAgICAgIC8vLyA8ZXhjZXB0aW9uIGNyZWY9IkFwaUV4Y2VwdGlvbiI+VGhyb3duIHdoZW4gdGhlIHJlcXVlc3QgcmV0dXJucyBhIG5vbi1zdWNjZXNzIHN0YXR1cyBjb2RlLjwvZXhjZXB0aW9uPgogICAgICAgIFtIZWFkZXJzKCJBY2NlcHQ6IGFwcGxpY2F0aW9uL2pzb24iKV0KICAgICAgICBbR2V0KCIvc3RvcmUvaW52ZW50b3J5IildCiAgICAgICAgVGFzazxJRGljdGlvbmFyeTxzdHJpbmcsIGludD4+IEdldEludmVudG9yeSgpOwoKICAgICAgICAvLy8gPHN1bW1hcnk+UGxhY2UgYW4gb3JkZXIgZm9yIGEgcGV0PC9zdW1tYXJ5PgogICAgICAgIC8vLyA8cmVtYXJrcz5QbGFjZSBhIG5ldyBvcmRlciBpbiB0aGUgc3RvcmU8L3JlbWFya3M+CiAgICAgICAgLy8vIDxyZXR1cm5zPnN1Y2Nlc3NmdWwgb3BlcmF0aW9uPC9yZXR1cm5zPgogICAgICAgIC8vLyA8ZXhjZXB0aW9uIGNyZWY9IkFwaUV4Y2VwdGlvbiI+CiAgICAgICAgLy8vIFRocm93biB3aGVuIHRoZSByZXF1ZXN0IHJldHVybnMgYSBub24tc3VjY2VzcyBzdGF0dXMgY29kZToKICAgICAgICAvLy8gPGxpc3QgdHlwZT0idGFibGUiPgogICAgICAgIC8vLyA8bGlzdGhlYWRlcj4KICAgICAgICAvLy8gPHRlcm0+U3RhdHVzPC90ZXJtPgogICAgICAgIC8vLyA8ZGVzY3JpcHRpb24+RGVzY3JpcHRpb248L2Rlc2NyaXB0aW9uPgogICAgICAgIC8vLyA8L2xpc3RoZWFkZXI+CiAgICAgICAgLy8vIDxpdGVtPgogICAgICAgIC8vLyA8dGVybT40MDU8L3Rlcm0+CiAgICAgICAgLy8vIDxkZXNjcmlwdGlvbj5JbnZhbGlkIGlucHV0PC9kZXNjcmlwdGlvbj4KICAgICAgICAvLy8gPC9pdGVtPgogICAgICAgIC8vLyA8L2xpc3Q+CiAgICAgICAgLy8vIDwvZXhjZXB0aW9uPgogICAgICAgIFtIZWFkZXJzKCJBY2NlcHQ6IGFwcGxpY2F0aW9uL2pzb24iKV0KICAgICAgICBbUG9zdCgiL3N0b3JlL29yZGVyIildCiAgICAgICAgVGFzazxPcmRlcj4gUGxhY2VPcmRlcihbQm9keV0gT3JkZXIgYm9keSk7CgogICAgICAgIC8vLyA8c3VtbWFyeT5GaW5kIHB1cmNoYXNlIG9yZGVyIGJ5IElEPC9zdW1tYXJ5PgogICAgICAgIC8vLyA8cmVtYXJrcz5Gb3IgdmFsaWQgcmVzcG9uc2UgdHJ5IGludGVnZXIgSURzIHdpdGggdmFsdWUgPD0gNSBvciA+IDEwLiBPdGhlciB2YWx1ZXMgd2lsbCBnZW5lcmF0ZWQgZXhjZXB0aW9uczwvcmVtYXJrcz4KICAgICAgICAvLy8gPHBhcmFtIG5hbWU9Im9yZGVySWQiPklEIG9mIG9yZGVyIHRoYXQgbmVlZHMgdG8gYmUgZmV0Y2hlZDwvcGFyYW0+CiAgICAgICAgLy8vIDxyZXR1cm5zPnN1Y2Nlc3NmdWwgb3BlcmF0aW9uPC9yZXR1cm5zPgogICAgICAgIC8vLyA8ZXhjZXB0aW9uIGNyZWY9IkFwaUV4Y2VwdGlvbiI+CiAgICAgICAgLy8vIFRocm93biB3aGVuIHRoZSByZXF1ZXN0IHJldHVybnMgYSBub24tc3VjY2VzcyBzdGF0dXMgY29kZToKICAgICAgICAvLy8gPGxpc3QgdHlwZT0idGFibGUiPgogICAgICAgIC8vLyA8bGlzdGhlYWRlcj4KICAgICAgICAvLy8gPHRlcm0+U3RhdHVzPC90ZXJtPgogICAgICAgIC8vLyA8ZGVzY3JpcHRpb24+RGVzY3JpcHRpb248L2Rlc2NyaXB0aW9uPgogICAgICAgIC8vLyA8L2xpc3RoZWFkZXI+CiAgICAgICAgLy8vIDxpdGVtPgogICAgICAgIC8vLyA8dGVybT40MDA8L3Rlcm0+CiAgICAgICAgLy8vIDxkZXNjcmlwdGlvbj5JbnZhbGlkIElEIHN1cHBsaWVkPC9kZXNjcmlwdGlvbj4KICAgICAgICAvLy8gPC9pdGVtPgogICAgICAgIC8vLyA8aXRlbT4KICAgICAgICAvLy8gPHRlcm0+NDA0PC90ZXJtPgogICAgICAgIC8vLyA8ZGVzY3JpcHRpb24+T3JkZXIgbm90IGZvdW5kPC9kZXNjcmlwdGlvbj4KICAgICAgICAvLy8gPC9pdGVtPgogICAgICAgIC8vLyA8L2xpc3Q+CiAgICAgICAgLy8vIDwvZXhjZXB0aW9uPgogICAgICAgIFtIZWFkZXJzKCJBY2NlcHQ6IGFwcGxpY2F0aW9uL2pzb24iKV0KICAgICAgICBbR2V0KCIvc3RvcmUvb3JkZXIve29yZGVySWR9IildCiAgICAgICAgVGFzazxPcmRlcj4gR2V0T3JkZXJCeUlkKGxvbmcgb3JkZXJJZCk7CgogICAgICAgIC8vLyA8c3VtbWFyeT5EZWxldGUgcHVyY2hhc2Ugb3JkZXIgYnkgSUQ8L3N1bW1hcnk+CiAgICAgICAgLy8vIDxyZW1hcmtzPkZvciB2YWxpZCByZXNwb25zZSB0cnkgaW50ZWdlciBJRHMgd2l0aCB2YWx1ZSA8IDEwMDAuIEFueXRoaW5nIGFib3ZlIDEwMDAgb3Igbm9uaW50ZWdlcnMgd2lsbCBnZW5lcmF0ZSBBUEkgZXJyb3JzPC9yZW1hcmtzPgogICAgICAgIC8vLyA8cGFyYW0gbmFtZT0ib3JkZXJJZCI+SUQgb2YgdGhlIG9yZGVyIHRoYXQgbmVlZHMgdG8gYmUgZGVsZXRlZDwvcGFyYW0+CiAgICAgICAgLy8vIDxyZXR1cm5zPkEgPHNlZSBjcmVmPSJUYXNrIi8+IHRoYXQgY29tcGxldGVzIHdoZW4gdGhlIHJlcXVlc3QgaXMgZmluaXNoZWQuPC9yZXR1cm5zPgogICAgICAgIC8vLyA8ZXhjZXB0aW9uIGNyZWY9IkFwaUV4Y2VwdGlvbiI+CiAgICAgICAgLy8vIFRocm93biB3aGVuIHRoZSByZXF1ZXN0IHJldHVybnMgYSBub24tc3VjY2VzcyBzdGF0dXMgY29kZToKICAgICAgICAvLy8gPGxpc3QgdHlwZT0idGFibGUiPgogICAgICAgIC8vLyA8bGlzdGhlYWRlcj4KICAgICAgICAvLy8gPHRlcm0+U3RhdHVzPC90ZXJtPgogICAgICAgIC8vLyA8ZGVzY3JpcHRpb24+RGVzY3JpcHRpb248L2Rlc2NyaXB0aW9uPgogICAgICAgIC8vLyA8L2xpc3RoZWFkZXI+CiAgICAgICAgLy8vIDxpdGVtPgogICAgICAgIC8vLyA8dGVybT40MDA8L3Rlcm0+CiAgICAgICAgLy8vIDxkZXNjcmlwdGlvbj5JbnZhbGlkIElEIHN1cHBsaWVkPC9kZXNjcmlwdGlvbj4KICAgICAgICAvLy8gPC9pdGVtPgogICAgICAgIC8vLyA8aXRlbT4KICAgICAgICAvLy8gPHRlcm0+NDA0PC90ZXJtPgogICAgICAgIC8vLyA8ZGVzY3JpcHRpb24+T3JkZXIgbm90IGZvdW5kPC9kZXNjcmlwdGlvbj4KICAgICAgICAvLy8gPC9pdGVtPgogICAgICAgIC8vLyA8L2xpc3Q+CiAgICAgICAgLy8vIDwvZXhjZXB0aW9uPgogICAgICAgIFtEZWxldGUoIi9zdG9yZS9vcmRlci97b3JkZXJJZH0iKV0KICAgICAgICBUYXNrIERlbGV0ZU9yZGVyKGxvbmcgb3JkZXJJZCk7CgogICAgICAgIC8vLyA8c3VtbWFyeT5DcmVhdGUgdXNlcjwvc3VtbWFyeT4KICAgICAgICAvLy8gPHJlbWFya3M+VGhpcyBjYW4gb25seSBiZSBkb25lIGJ5IHRoZSBsb2dnZWQgaW4gdXNlci48L3JlbWFya3M+CiAgICAgICAgLy8vIDxwYXJhbSBuYW1lPSJib2R5Ij5DcmVhdGVkIHVzZXIgb2JqZWN0PC9wYXJhbT4KICAgICAgICAvLy8gPHJldHVybnM+c3VjY2Vzc2Z1bCBvcGVyYXRpb248L3JldHVybnM+CiAgICAgICAgLy8vIDxleGNlcHRpb24gY3JlZj0iQXBpRXhjZXB0aW9uIj5UaHJvd24gd2hlbiB0aGUgcmVxdWVzdCByZXR1cm5zIGEgbm9uLXN1Y2Nlc3Mgc3RhdHVzIGNvZGUuPC9leGNlcHRpb24+CiAgICAgICAgW0hlYWRlcnMoIkFjY2VwdDogYXBwbGljYXRpb24vanNvbiwgYXBwbGljYXRpb24veG1sIildCiAgICAgICAgW1Bvc3QoIi91c2VyIildCiAgICAgICAgVGFzayBDcmVhdGVVc2VyKFtCb2R5XSBVc2VyIGJvZHkpOwoKICAgICAgICAvLy8gPHN1bW1hcnk+Q3JlYXRlcyBsaXN0IG9mIHVzZXJzIHdpdGggZ2l2ZW4gaW5wdXQgYXJyYXk8L3N1bW1hcnk+CiAgICAgICAgLy8vIDxyZW1hcmtzPkNyZWF0ZXMgbGlzdCBvZiB1c2VycyB3aXRoIGdpdmVuIGlucHV0IGFycmF5PC9yZW1hcmtzPgogICAgICAgIC8vLyA8cmV0dXJucz5TdWNjZXNzZnVsIG9wZXJhdGlvbjwvcmV0dXJucz4KICAgICAgICAvLy8gPGV4Y2VwdGlvbiBjcmVmPSJBcGlFeGNlcHRpb24iPlRocm93biB3aGVuIHRoZSByZXF1ZXN0IHJldHVybnMgYSBub24tc3VjY2VzcyBzdGF0dXMgY29kZS48L2V4Y2VwdGlvbj4KICAgICAgICBbSGVhZGVycygiQWNjZXB0OiBhcHBsaWNhdGlvbi94bWwsIGFwcGxpY2F0aW9uL2pzb24iKV0KICAgICAgICBbUG9zdCgiL3VzZXIvY3JlYXRlV2l0aExpc3QiKV0KICAgICAgICBUYXNrPFVzZXI+IENyZWF0ZVVzZXJzV2l0aExpc3RJbnB1dChbQm9keV0gSUVudW1lcmFibGU8VXNlcj4gYm9keSk7CgogICAgICAgIC8vLyA8c3VtbWFyeT5Mb2dzIHVzZXIgaW50byB0aGUgc3lzdGVtPC9zdW1tYXJ5PgogICAgICAgIC8vLyA8cGFyYW0gbmFtZT0idXNlcm5hbWUiPlRoZSB1c2VyIG5hbWUgZm9yIGxvZ2luPC9wYXJhbT4KICAgICAgICAvLy8gPHBhcmFtIG5hbWU9InBhc3N3b3JkIj5UaGUgcGFzc3dvcmQgZm9yIGxvZ2luIGluIGNsZWFyIHRleHQ8L3BhcmFtPgogICAgICAgIC8vLyA8cmV0dXJucz5zdWNjZXNzZnVsIG9wZXJhdGlvbjwvcmV0dXJucz4KICAgICAgICAvLy8gPGV4Y2VwdGlvbiBjcmVmPSJBcGlFeGNlcHRpb24iPgogICAgICAgIC8vLyBUaHJvd24gd2hlbiB0aGUgcmVxdWVzdCByZXR1cm5zIGEgbm9uLXN1Y2Nlc3Mgc3RhdHVzIGNvZGU6CiAgICAgICAgLy8vIDxsaXN0IHR5cGU9InRhYmxlIj4KICAgICAgICAvLy8gPGxpc3RoZWFkZXI+CiAgICAgICAgLy8vIDx0ZXJtPlN0YXR1czwvdGVybT4KICAgICAgICAvLy8gPGRlc2NyaXB0aW9uPkRlc2NyaXB0aW9uPC9kZXNjcmlwdGlvbj4KICAgICAgICAvLy8gPC9saXN0aGVhZGVyPgogICAgICAgIC8vLyA8aXRlbT4KICAgICAgICAvLy8gPHRlcm0+NDAwPC90ZXJtPgogICAgICAgIC8vLyA8ZGVzY3JpcHRpb24+SW52YWxpZCB1c2VybmFtZS9wYXNzd29yZCBzdXBwbGllZDwvZGVzY3JpcHRpb24+CiAgICAgICAgLy8vIDwvaXRlbT4KICAgICAgICAvLy8gPC9saXN0PgogICAgICAgIC8vLyA8L2V4Y2VwdGlvbj4KICAgICAgICBbSGVhZGVycygiQWNjZXB0OiBhcHBsaWNhdGlvbi9qc29uIildCiAgICAgICAgW0dldCgiL3VzZXIvbG9naW4iKV0KICAgICAgICBUYXNrPHN0cmluZz4gTG9naW5Vc2VyKFtRdWVyeV0gc3RyaW5nIHVzZXJuYW1lLCBbUXVlcnldIHN0cmluZyBwYXNzd29yZCk7CgogICAgICAgIC8vLyA8c3VtbWFyeT5Mb2dzIG91dCBjdXJyZW50IGxvZ2dlZCBpbiB1c2VyIHNlc3Npb248L3N1bW1hcnk+CiAgICAgICAgLy8vIDxyZXR1cm5zPkEgPHNlZSBjcmVmPSJUYXNrIi8+IHRoYXQgY29tcGxldGVzIHdoZW4gdGhlIHJlcXVlc3QgaXMgZmluaXNoZWQuPC9yZXR1cm5zPgogICAgICAgIC8vLyA8ZXhjZXB0aW9uIGNyZWY9IkFwaUV4Y2VwdGlvbiI+VGhyb3duIHdoZW4gdGhlIHJlcXVlc3QgcmV0dXJucyBhIG5vbi1zdWNjZXNzIHN0YXR1cyBjb2RlLjwvZXhjZXB0aW9uPgogICAgICAgIFtHZXQoIi91c2VyL2xvZ291dCIpXQogICAgICAgIFRhc2sgTG9nb3V0VXNlcigpOwoKICAgICAgICAvLy8gPHN1bW1hcnk+R2V0IHVzZXIgYnkgdXNlciBuYW1lPC9zdW1tYXJ5PgogICAgICAgIC8vLyA8cGFyYW0gbmFtZT0idXNlcm5hbWUiPlRoZSBuYW1lIHRoYXQgbmVlZHMgdG8gYmUgZmV0Y2hlZC4gVXNlIHVzZXIxIGZvciB0ZXN0aW5nLjwvcGFyYW0+CiAgICAgICAgLy8vIDxyZXR1cm5zPnN1Y2Nlc3NmdWwgb3BlcmF0aW9uPC9yZXR1cm5zPgogICAgICAgIC8vLyA8ZXhjZXB0aW9uIGNyZWY9IkFwaUV4Y2VwdGlvbiI+CiAgICAgICAgLy8vIFRocm93biB3aGVuIHRoZSByZXF1ZXN0IHJldHVybnMgYSBub24tc3VjY2VzcyBzdGF0dXMgY29kZToKICAgICAgICAvLy8gPGxpc3QgdHlwZT0idGFibGUiPgogICAgICAgIC8vLyA8bGlzdGhlYWRlcj4KICAgICAgICAvLy8gPHRlcm0+U3RhdHVzPC90ZXJtPgogICAgICAgIC8vLyA8ZGVzY3JpcHRpb24+RGVzY3JpcHRpb248L2Rlc2NyaXB0aW9uPgogICAgICAgIC8vLyA8L2xpc3RoZWFkZXI+CiAgICAgICAgLy8vIDxpdGVtPgogICAgICAgIC8vLyA8dGVybT40MDA8L3Rlcm0+CiAgICAgICAgLy8vIDxkZXNjcmlwdGlvbj5JbnZhbGlkIHVzZXJuYW1lIHN1cHBsaWVkPC9kZXNjcmlwdGlvbj4KICAgICAgICAvLy8gPC9pdGVtPgogICAgICAgIC8vLyA8aXRlbT4KICAgICAgICAvLy8gPHRlcm0+NDA0PC90ZXJtPgogICAgICAgIC8vLyA8ZGVzY3JpcHRpb24+VXNlciBub3QgZm91bmQ8L2Rlc2NyaXB0aW9uPgogICAgICAgIC8vLyA8L2l0ZW0+CiAgICAgICAgLy8vIDwvbGlzdD4KICAgICAgICAvLy8gPC9leGNlcHRpb24+CiAgICAgICAgW0hlYWRlcnMoIkFjY2VwdDogYXBwbGljYXRpb24vanNvbiIpXQogICAgICAgIFtHZXQoIi91c2VyL3t1c2VybmFtZX0iKV0KICAgICAgICBUYXNrPFVzZXI+IEdldFVzZXJCeU5hbWUoc3RyaW5nIHVzZXJuYW1lKTsKCiAgICAgICAgLy8vIDxzdW1tYXJ5PlVwZGF0ZSB1c2VyPC9zdW1tYXJ5PgogICAgICAgIC8vLyA8cmVtYXJrcz5UaGlzIGNhbiBvbmx5IGJlIGRvbmUgYnkgdGhlIGxvZ2dlZCBpbiB1c2VyLjwvcmVtYXJrcz4KICAgICAgICAvLy8gPHBhcmFtIG5hbWU9InVzZXJuYW1lIj5uYW1lIHRoYXQgbmVlZCB0byBiZSBkZWxldGVkPC9wYXJhbT4KICAgICAgICAvLy8gPHBhcmFtIG5hbWU9ImJvZHkiPlVwZGF0ZSBhbiBleGlzdGVudCB1c2VyIGluIHRoZSBzdG9yZTwvcGFyYW0+CiAgICAgICAgLy8vIDxyZXR1cm5zPkEgPHNlZSBjcmVmPSJUYXNrIi8+IHRoYXQgY29tcGxldGVzIHdoZW4gdGhlIHJlcXVlc3QgaXMgZmluaXNoZWQuPC9yZXR1cm5zPgogICAgICAgIC8vLyA8ZXhjZXB0aW9uIGNyZWY9IkFwaUV4Y2VwdGlvbiI+VGhyb3duIHdoZW4gdGhlIHJlcXVlc3QgcmV0dXJucyBhIG5vbi1zdWNjZXNzIHN0YXR1cyBjb2RlLjwvZXhjZXB0aW9uPgogICAgICAgIFtQdXQoIi91c2VyL3t1c2VybmFtZX0iKV0KICAgICAgICBUYXNrIFVwZGF0ZVVzZXIoc3RyaW5nIHVzZXJuYW1lLCBbQm9keV0gVXNlciBib2R5KTsKCiAgICAgICAgLy8vIDxzdW1tYXJ5PkRlbGV0ZSB1c2VyPC9zdW1tYXJ5PgogICAgICAgIC8vLyA8cmVtYXJrcz5UaGlzIGNhbiBvbmx5IGJlIGRvbmUgYnkgdGhlIGxvZ2dlZCBpbiB1c2VyLjwvcmVtYXJrcz4KICAgICAgICAvLy8gPHBhcmFtIG5hbWU9InVzZXJuYW1lIj5UaGUgbmFtZSB0aGF0IG5lZWRzIHRvIGJlIGRlbGV0ZWQ8L3BhcmFtPgogICAgICAgIC8vLyA8cmV0dXJucz5BIDxzZWUgY3JlZj0iVGFzayIvPiB0aGF0IGNvbXBsZXRlcyB3aGVuIHRoZSByZXF1ZXN0IGlzIGZpbmlzaGVkLjwvcmV0dXJucz4KICAgICAgICAvLy8gPGV4Y2VwdGlvbiBjcmVmPSJBcGlFeGNlcHRpb24iPgogICAgICAgIC8vLyBUaHJvd24gd2hlbiB0aGUgcmVxdWVzdCByZXR1cm5zIGEgbm9uLXN1Y2Nlc3Mgc3RhdHVzIGNvZGU6CiAgICAgICAgLy8vIDxsaXN0IHR5cGU9InRhYmxlIj4KICAgICAgICAvLy8gPGxpc3RoZWFkZXI+CiAgICAgICAgLy8vIDx0ZXJtPlN0YXR1czwvdGVybT4KICAgICAgICAvLy8gPGRlc2NyaXB0aW9uPkRlc2NyaXB0aW9uPC9kZXNjcmlwdGlvbj4KICAgICAgICAvLy8gPC9saXN0aGVhZGVyPgogICAgICAgIC8vLyA8aXRlbT4KICAgICAgICAvLy8gPHRlcm0+NDAwPC90ZXJtPgogICAgICAgIC8vLyA8ZGVzY3JpcHRpb24+SW52YWxpZCB1c2VybmFtZSBzdXBwbGllZDwvZGVzY3JpcHRpb24+CiAgICAgICAgLy8vIDwvaXRlbT4KICAgICAgICAvLy8gPGl0ZW0+CiAgICAgICAgLy8vIDx0ZXJtPjQwNDwvdGVybT4KICAgICAgICAvLy8gPGRlc2NyaXB0aW9uPlVzZXIgbm90IGZvdW5kPC9kZXNjcmlwdGlvbj4KICAgICAgICAvLy8gPC9pdGVtPgogICAgICAgIC8vLyA8L2xpc3Q+CiAgICAgICAgLy8vIDwvZXhjZXB0aW9uPgogICAgICAgIFtEZWxldGUoIi91c2VyL3t1c2VybmFtZX0iKV0KICAgICAgICBUYXNrIERlbGV0ZVVzZXIoc3RyaW5nIHVzZXJuYW1lKTsKICAgIH0KfQpgYGAKCkhlcmUncyBhbiBleGFtcGxlIGdlbmVyYXRlZCBvdXRwdXQgZnJvbSB0aGUgW1N3YWdnZXIgUGV0c3RvcmUgZXhhbXBsZV0oaHR0cHM6Ly9wZXRzdG9yZTMuc3dhZ2dlci5pbykgY29uZmlndXJlZCB0byB3cmFwIHRoZSByZXR1cm4gdHlwZSBpbiBgSUFwaVJlc3BvbnNlPFQ+YAoKKipDTEkgVG9vbCoqCgpgYGBiYXNoCiQgcmVmaXR0ZXIgLi9vcGVuYXBpLmpzb24gLS1uYW1lc3BhY2UgIllvdXIuTmFtZXNwYWNlLk9mLkNob2ljZS5HZW5lcmF0ZWRDb2RlIiAtLXVzZS1hcGktcmVzcG9uc2UKYGBgCgoqKlNvdXJjZSBHZW5lcmF0b3IgKioqLnJlZml0dGVyKioqIGZpbGUqKgoKYGBganNvbgp7CiAgIm9wZW5BcGlQYXRoIjogIi4vb3BlbmFwaS5qc29uIiwKICAibmFtZXNwYWNlIjogIllvdXIuTmFtZXNwYWNlLk9mLkNob2ljZS5HZW5lcmF0ZWRDb2RlIiwKICAicmV0dXJuSUFwaVJlc3BvbnNlIjogdHJ1ZQp9CmBgYAoKKipPdXRwdXQqKgoKYGBgY3MKdXNpbmcgUmVmaXQ7CnVzaW5nIFN5c3RlbS5Db2xsZWN0aW9ucy5HZW5lcmljOwp1c2luZyBTeXN0ZW0uVGV4dC5Kc29uLlNlcmlhbGl6YXRpb247CnVzaW5nIFN5c3RlbS5UaHJlYWRpbmcuVGFza3M7CgpuYW1lc3BhY2UgWW91ci5OYW1lc3BhY2UuT2YuQ2hvaWNlLkdlbmVyYXRlZENvZGUKewogICAgW1N5c3RlbS5Db2RlRG9tLkNvbXBpbGVyLkdlbmVyYXRlZENvZGUoIlJlZml0dGVyIiwgIjEuMC4wLjAiKV0KICAgIHB1YmxpYyBwYXJ0aWFsIGludGVyZmFjZSBJU3dhZ2dlclBldHN0b3JlCiAgICB7CiAgICAgICAgLy8vIDxzdW1tYXJ5PlVwZGF0ZSBhbiBleGlzdGluZyBwZXQ8L3N1bW1hcnk+CiAgICAgICAgLy8vIDxyZW1hcmtzPlVwZGF0ZSBhbiBleGlzdGluZyBwZXQgYnkgSWQ8L3JlbWFya3M+CiAgICAgICAgLy8vIDxwYXJhbSBuYW1lPSJib2R5Ij5VcGRhdGUgYW4gZXhpc3RlbnQgcGV0IGluIHRoZSBzdG9yZTwvcGFyYW0+CiAgICAgICAgLy8vIDxyZXR1cm5zPgogICAgICAgIC8vLyBBIDxzZWUgY3JlZj0iVGFzayIvPiByZXByZXNlbnRpbmcgdGhlIDxzZWUgY3JlZj0iSUFwaVJlc3BvbnNlIi8+IGluc3RhbmNlIGNvbnRhaW5pbmcgdGhlIHJlc3VsdDoKICAgICAgICAvLy8gPGxpc3QgdHlwZT0idGFibGUiPgogICAgICAgIC8vLyA8bGlzdGhlYWRlcj4KICAgICAgICAvLy8gPHRlcm0+U3RhdHVzPC90ZXJtPgogICAgICAgIC8vLyA8ZGVzY3JpcHRpb24+RGVzY3JpcHRpb248L2Rlc2NyaXB0aW9uPgogICAgICAgIC8vLyA8L2xpc3RoZWFkZXI+CiAgICAgICAgLy8vIDxpdGVtPgogICAgICAgIC8vLyA8dGVybT4yMDA8L3Rlcm0+CiAgICAgICAgLy8vIDxkZXNjcmlwdGlvbj5TdWNjZXNzZnVsIG9wZXJhdGlvbjwvZGVzY3JpcHRpb24+CiAgICAgICAgLy8vIDwvaXRlbT4KICAgICAgICAvLy8gPGl0ZW0+CiAgICAgICAgLy8vIDx0ZXJtPjQwMDwvdGVybT4KICAgICAgICAvLy8gPGRlc2NyaXB0aW9uPkludmFsaWQgSUQgc3VwcGxpZWQ8L2Rlc2NyaXB0aW9uPgogICAgICAgIC8vLyA8L2l0ZW0+CiAgICAgICAgLy8vIDxpdGVtPgogICAgICAgIC8vLyA8dGVybT40MDQ8L3Rlcm0+CiAgICAgICAgLy8vIDxkZXNjcmlwdGlvbj5QZXQgbm90IGZvdW5kPC9kZXNjcmlwdGlvbj4KICAgICAgICAvLy8gPC9pdGVtPgogICAgICAgIC8vLyA8aXRlbT4KICAgICAgICAvLy8gPHRlcm0+NDA1PC90ZXJtPgogICAgICAgIC8vLyA8ZGVzY3JpcHRpb24+VmFsaWRhdGlvbiBleGNlcHRpb248L2Rlc2NyaXB0aW9uPgogICAgICAgIC8vLyA8L2l0ZW0+CiAgICAgICAgLy8vIDwvbGlzdD4KICAgICAgICAvLy8gPC9yZXR1cm5zPgogICAgICAgIFtIZWFkZXJzKCJBY2NlcHQ6IGFwcGxpY2F0aW9uL3htbCwgYXBwbGljYXRpb24vanNvbiIpXQogICAgICAgIFtQdXQoIi9wZXQiKV0KICAgICAgICBUYXNrPElBcGlSZXNwb25zZTxQZXQ+PiBVcGRhdGVQZXQoW0JvZHldIFBldCBib2R5KTsKCiAgICAgICAgLy8vIDxzdW1tYXJ5PkFkZCBhIG5ldyBwZXQgdG8gdGhlIHN0b3JlPC9zdW1tYXJ5PgogICAgICAgIC8vLyA8cmVtYXJrcz5BZGQgYSBuZXcgcGV0IHRvIHRoZSBzdG9yZTwvcmVtYXJrcz4KICAgICAgICAvLy8gPHBhcmFtIG5hbWU9ImJvZHkiPkNyZWF0ZSBhIG5ldyBwZXQgaW4gdGhlIHN0b3JlPC9wYXJhbT4KICAgICAgICAvLy8gPHJldHVybnM+CiAgICAgICAgLy8vIEEgPHNlZSBjcmVmPSJUYXNrIi8+IHJlcHJlc2VudGluZyB0aGUgPHNlZSBjcmVmPSJJQXBpUmVzcG9uc2UiLz4gaW5zdGFuY2UgY29udGFpbmluZyB0aGUgcmVzdWx0OgogICAgICAgIC8vLyA8bGlzdCB0eXBlPSJ0YWJsZSI+CiAgICAgICAgLy8vIDxsaXN0aGVhZGVyPgogICAgICAgIC8vLyA8dGVybT5TdGF0dXM8L3Rlcm0+CiAgICAgICAgLy8vIDxkZXNjcmlwdGlvbj5EZXNjcmlwdGlvbjwvZGVzY3JpcHRpb24+CiAgICAgICAgLy8vIDwvbGlzdGhlYWRlcj4KICAgICAgICAvLy8gPGl0ZW0+CiAgICAgICAgLy8vIDx0ZXJtPjIwMDwvdGVybT4KICAgICAgICAvLy8gPGRlc2NyaXB0aW9uPlN1Y2Nlc3NmdWwgb3BlcmF0aW9uPC9kZXNjcmlwdGlvbj4KICAgICAgICAvLy8gPC9pdGVtPgogICAgICAgIC8vLyA8aXRlbT4KICAgICAgICAvLy8gPHRlcm0+NDA1PC90ZXJtPgogICAgICAgIC8vLyA8ZGVzY3JpcHRpb24+SW52YWxpZCBpbnB1dDwvZGVzY3JpcHRpb24+CiAgICAgICAgLy8vIDwvaXRlbT4KICAgICAgICAvLy8gPC9saXN0PgogICAgICAgIC8vLyA8L3JldHVybnM+CiAgICAgICAgW0hlYWRlcnMoIkFjY2VwdDogYXBwbGljYXRpb24veG1sLCBhcHBsaWNhdGlvbi9qc29uIildCiAgICAgICAgW1Bvc3QoIi9wZXQiKV0KICAgICAgICBUYXNrPElBcGlSZXNwb25zZTxQZXQ+PiBBZGRQZXQoW0JvZHldIFBldCBib2R5KTsKCiAgICAgICAgLy8vIDxzdW1tYXJ5PkZpbmRzIFBldHMgYnkgc3RhdHVzPC9zdW1tYXJ5PgogICAgICAgIC8vLyA8cmVtYXJrcz5NdWx0aXBsZSBzdGF0dXMgdmFsdWVzIGNhbiBiZSBwcm92aWRlZCB3aXRoIGNvbW1hIHNlcGFyYXRlZCBzdHJpbmdzPC9yZW1hcmtzPgogICAgICAgIC8vLyA8cGFyYW0gbmFtZT0ic3RhdHVzIj5TdGF0dXMgdmFsdWVzIHRoYXQgbmVlZCB0byBiZSBjb25zaWRlcmVkIGZvciBmaWx0ZXI8L3BhcmFtPgogICAgICAgIC8vLyA8cmV0dXJucz4KICAgICAgICAvLy8gQSA8c2VlIGNyZWY9IlRhc2siLz4gcmVwcmVzZW50aW5nIHRoZSA8c2VlIGNyZWY9IklBcGlSZXNwb25zZSIvPiBpbnN0YW5jZSBjb250YWluaW5nIHRoZSByZXN1bHQ6CiAgICAgICAgLy8vIDxsaXN0IHR5cGU9InRhYmxlIj4KICAgICAgICAvLy8gPGxpc3RoZWFkZXI+CiAgICAgICAgLy8vIDx0ZXJtPlN0YXR1czwvdGVybT4KICAgICAgICAvLy8gPGRlc2NyaXB0aW9uPkRlc2NyaXB0aW9uPC9kZXNjcmlwdGlvbj4KICAgICAgICAvLy8gPC9saXN0aGVhZGVyPgogICAgICAgIC8vLyA8aXRlbT4KICAgICAgICAvLy8gPHRlcm0+MjAwPC90ZXJtPgogICAgICAgIC8vLyA8ZGVzY3JpcHRpb24+c3VjY2Vzc2Z1bCBvcGVyYXRpb248L2Rlc2NyaXB0aW9uPgogICAgICAgIC8vLyA8L2l0ZW0+CiAgICAgICAgLy8vIDxpdGVtPgogICAgICAgIC8vLyA8dGVybT40MDA8L3Rlcm0+CiAgICAgICAgLy8vIDxkZXNjcmlwdGlvbj5JbnZhbGlkIHN0YXR1cyB2YWx1ZTwvZGVzY3JpcHRpb24+CiAgICAgICAgLy8vIDwvaXRlbT4KICAgICAgICAvLy8gPC9saXN0PgogICAgICAgIC8vLyA8L3JldHVybnM+CiAgICAgICAgW0hlYWRlcnMoIkFjY2VwdDogYXBwbGljYXRpb24vanNvbiIpXQogICAgICAgIFtHZXQoIi9wZXQvZmluZEJ5U3RhdHVzIildCiAgICAgICAgVGFzazxJQXBpUmVzcG9uc2U8SUNvbGxlY3Rpb248UGV0Pj4+IEZpbmRQZXRzQnlTdGF0dXMoW1F1ZXJ5XSBTdGF0dXM/IHN0YXR1cyk7CgogICAgICAgIC8vLyA8c3VtbWFyeT5GaW5kcyBQZXRzIGJ5IHRhZ3M8L3N1bW1hcnk+CiAgICAgICAgLy8vIDxyZW1hcmtzPk11bHRpcGxlIHRhZ3MgY2FuIGJlIHByb3ZpZGVkIHdpdGggY29tbWEgc2VwYXJhdGVkIHN0cmluZ3MuIFVzZSB0YWcxLCB0YWcyLCB0YWczIGZvciB0ZXN0aW5nLjwvcmVtYXJrcz4KICAgICAgICAvLy8gPHBhcmFtIG5hbWU9InRhZ3MiPlRhZ3MgdG8gZmlsdGVyIGJ5PC9wYXJhbT4KICAgICAgICAvLy8gPHJldHVybnM+CiAgICAgICAgLy8vIEEgPHNlZSBjcmVmPSJUYXNrIi8+IHJlcHJlc2VudGluZyB0aGUgPHNlZSBjcmVmPSJJQXBpUmVzcG9uc2UiLz4gaW5zdGFuY2UgY29udGFpbmluZyB0aGUgcmVzdWx0OgogICAgICAgIC8vLyA8bGlzdCB0eXBlPSJ0YWJsZSI+CiAgICAgICAgLy8vIDxsaXN0aGVhZGVyPgogICAgICAgIC8vLyA8dGVybT5TdGF0dXM8L3Rlcm0+CiAgICAgICAgLy8vIDxkZXNjcmlwdGlvbj5EZXNjcmlwdGlvbjwvZGVzY3JpcHRpb24+CiAgICAgICAgLy8vIDwvbGlzdGhlYWRlcj4KICAgICAgICAvLy8gPGl0ZW0+CiAgICAgICAgLy8vIDx0ZXJtPjIwMDwvdGVybT4KICAgICAgICAvLy8gPGRlc2NyaXB0aW9uPnN1Y2Nlc3NmdWwgb3BlcmF0aW9uPC9kZXNjcmlwdGlvbj4KICAgICAgICAvLy8gPC9pdGVtPgogICAgICAgIC8vLyA8aXRlbT4KICAgICAgICAvLy8gPHRlcm0+NDAwPC90ZXJtPgogICAgICAgIC8vLyA8ZGVzY3JpcHRpb24+SW52YWxpZCB0YWcgdmFsdWU8L2Rlc2NyaXB0aW9uPgogICAgICAgIC8vLyA8L2l0ZW0+CiAgICAgICAgLy8vIDwvbGlzdD4KICAgICAgICAvLy8gPC9yZXR1cm5zPgogICAgICAgIFtIZWFkZXJzKCJBY2NlcHQ6IGFwcGxpY2F0aW9uL2pzb24iKV0KICAgICAgICBbR2V0KCIvcGV0L2ZpbmRCeVRhZ3MiKV0KICAgICAgICBUYXNrPElBcGlSZXNwb25zZTxJQ29sbGVjdGlvbjxQZXQ+Pj4gRmluZFBldHNCeVRhZ3MoW1F1ZXJ5KENvbGxlY3Rpb25Gb3JtYXQuTXVsdGkpXSBJRW51bWVyYWJsZTxzdHJpbmc+IHRhZ3MpOwoKICAgICAgICAvLy8gPHN1bW1hcnk+RmluZCBwZXQgYnkgSUQ8L3N1bW1hcnk+CiAgICAgICAgLy8vIDxyZW1hcmtzPlJldHVybnMgYSBzaW5nbGUgcGV0PC9yZW1hcmtzPgogICAgICAgIC8vLyA8cGFyYW0gbmFtZT0icGV0SWQiPklEIG9mIHBldCB0byByZXR1cm48L3BhcmFtPgogICAgICAgIC8vLyA8cmV0dXJucz4KICAgICAgICAvLy8gQSA8c2VlIGNyZWY9IlRhc2siLz4gcmVwcmVzZW50aW5nIHRoZSA8c2VlIGNyZWY9IklBcGlSZXNwb25zZSIvPiBpbnN0YW5jZSBjb250YWluaW5nIHRoZSByZXN1bHQ6CiAgICAgICAgLy8vIDxsaXN0IHR5cGU9InRhYmxlIj4KICAgICAgICAvLy8gPGxpc3RoZWFkZXI+CiAgICAgICAgLy8vIDx0ZXJtPlN0YXR1czwvdGVybT4KICAgICAgICAvLy8gPGRlc2NyaXB0aW9uPkRlc2NyaXB0aW9uPC9kZXNjcmlwdGlvbj4KICAgICAgICAvLy8gPC9saXN0aGVhZGVyPgogICAgICAgIC8vLyA8aXRlbT4KICAgICAgICAvLy8gPHRlcm0+MjAwPC90ZXJtPgogICAgICAgIC8vLyA8ZGVzY3JpcHRpb24+c3VjY2Vzc2Z1bCBvcGVyYXRpb248L2Rlc2NyaXB0aW9uPgogICAgICAgIC8vLyA8L2l0ZW0+CiAgICAgICAgLy8vIDxpdGVtPgogICAgICAgIC8vLyA8dGVybT40MDA8L3Rlcm0+CiAgICAgICAgLy8vIDxkZXNjcmlwdGlvbj5JbnZhbGlkIElEIHN1cHBsaWVkPC9kZXNjcmlwdGlvbj4KICAgICAgICAvLy8gPC9pdGVtPgogICAgICAgIC8vLyA8aXRlbT4KICAgICAgICAvLy8gPHRlcm0+NDA0PC90ZXJtPgogICAgICAgIC8vLyA8ZGVzY3JpcHRpb24+UGV0IG5vdCBmb3VuZDwvZGVzY3JpcHRpb24+CiAgICAgICAgLy8vIDwvaXRlbT4KICAgICAgICAvLy8gPC9saXN0PgogICAgICAgIC8vLyA8L3JldHVybnM+CiAgICAgICAgW0hlYWRlcnMoIkFjY2VwdDogYXBwbGljYXRpb24veG1sLCBhcHBsaWNhdGlvbi9qc29uIildCiAgICAgICAgW0dldCgiL3BldC97cGV0SWR9IildCiAgICAgICAgVGFzazxJQXBpUmVzcG9uc2U8UGV0Pj4gR2V0UGV0QnlJZChsb25nIHBldElkKTsKCiAgICAgICAgLy8vIDxzdW1tYXJ5PlVwZGF0ZXMgYSBwZXQgaW4gdGhlIHN0b3JlIHdpdGggZm9ybSBkYXRhPC9zdW1tYXJ5PgogICAgICAgIC8vLyA8cGFyYW0gbmFtZT0icGV0SWQiPklEIG9mIHBldCB0aGF0IG5lZWRzIHRvIGJlIHVwZGF0ZWQ8L3BhcmFtPgogICAgICAgIC8vLyA8cGFyYW0gbmFtZT0ibmFtZSI+TmFtZSBvZiBwZXQgdGhhdCBuZWVkcyB0byBiZSB1cGRhdGVkPC9wYXJhbT4KICAgICAgICAvLy8gPHBhcmFtIG5hbWU9InN0YXR1cyI+U3RhdHVzIG9mIHBldCB0aGF0IG5lZWRzIHRvIGJlIHVwZGF0ZWQ8L3BhcmFtPgogICAgICAgIC8vLyA8cmV0dXJucz4KICAgICAgICAvLy8gQSA8c2VlIGNyZWY9IlRhc2siLz4gcmVwcmVzZW50aW5nIHRoZSA8c2VlIGNyZWY9IklBcGlSZXNwb25zZSIvPiBpbnN0YW5jZSBjb250YWluaW5nIHRoZSByZXN1bHQ6CiAgICAgICAgLy8vIDxsaXN0IHR5cGU9InRhYmxlIj4KICAgICAgICAvLy8gPGxpc3RoZWFkZXI+CiAgICAgICAgLy8vIDx0ZXJtPlN0YXR1czwvdGVybT4KICAgICAgICAvLy8gPGRlc2NyaXB0aW9uPkRlc2NyaXB0aW9uPC9kZXNjcmlwdGlvbj4KICAgICAgICAvLy8gPC9saXN0aGVhZGVyPgogICAgICAgIC8vLyA8aXRlbT4KICAgICAgICAvLy8gPHRlcm0+NDA1PC90ZXJtPgogICAgICAgIC8vLyA8ZGVzY3JpcHRpb24+SW52YWxpZCBpbnB1dDwvZGVzY3JpcHRpb24+CiAgICAgICAgLy8vIDwvaXRlbT4KICAgICAgICAvLy8gPC9saXN0PgogICAgICAgIC8vLyA8L3JldHVybnM+CiAgICAgICAgW1Bvc3QoIi9wZXQve3BldElkfSIpXQogICAgICAgIFRhc2s8SUFwaVJlc3BvbnNlPiBVcGRhdGVQZXRXaXRoRm9ybShsb25nIHBldElkLCBbUXVlcnldIHN0cmluZyBuYW1lLCBbUXVlcnldIHN0cmluZyBzdGF0dXMpOwoKICAgICAgICAvLy8gPHN1bW1hcnk+RGVsZXRlcyBhIHBldDwvc3VtbWFyeT4KICAgICAgICAvLy8gPHBhcmFtIG5hbWU9InBldElkIj5QZXQgaWQgdG8gZGVsZXRlPC9wYXJhbT4KICAgICAgICAvLy8gPHJldHVybnM+CiAgICAgICAgLy8vIEEgPHNlZSBjcmVmPSJUYXNrIi8+IHJlcHJlc2VudGluZyB0aGUgPHNlZSBjcmVmPSJJQXBpUmVzcG9uc2UiLz4gaW5zdGFuY2UgY29udGFpbmluZyB0aGUgcmVzdWx0OgogICAgICAgIC8vLyA8bGlzdCB0eXBlPSJ0YWJsZSI+CiAgICAgICAgLy8vIDxsaXN0aGVhZGVyPgogICAgICAgIC8vLyA8dGVybT5TdGF0dXM8L3Rlcm0+CiAgICAgICAgLy8vIDxkZXNjcmlwdGlvbj5EZXNjcmlwdGlvbjwvZGVzY3JpcHRpb24+CiAgICAgICAgLy8vIDwvbGlzdGhlYWRlcj4KICAgICAgICAvLy8gPGl0ZW0+CiAgICAgICAgLy8vIDx0ZXJtPjQwMDwvdGVybT4KICAgICAgICAvLy8gPGRlc2NyaXB0aW9uPkludmFsaWQgcGV0IHZhbHVlPC9kZXNjcmlwdGlvbj4KICAgICAgICAvLy8gPC9pdGVtPgogICAgICAgIC8vLyA8L2xpc3Q+CiAgICAgICAgLy8vIDwvcmV0dXJucz4KICAgICAgICBbRGVsZXRlKCIvcGV0L3twZXRJZH0iKV0KICAgICAgICBUYXNrPElBcGlSZXNwb25zZT4gRGVsZXRlUGV0KGxvbmcgcGV0SWQsIFtIZWFkZXIoImFwaV9rZXkiKV0gc3RyaW5nIGFwaV9rZXkpOwoKICAgICAgICAvLy8gPHN1bW1hcnk+dXBsb2FkcyBhbiBpbWFnZTwvc3VtbWFyeT4KICAgICAgICAvLy8gPHBhcmFtIG5hbWU9InBldElkIj5JRCBvZiBwZXQgdG8gdXBkYXRlPC9wYXJhbT4KICAgICAgICAvLy8gPHBhcmFtIG5hbWU9ImFkZGl0aW9uYWxNZXRhZGF0YSI+QWRkaXRpb25hbCBNZXRhZGF0YTwvcGFyYW0+CiAgICAgICAgLy8vIDxyZXR1cm5zPgogICAgICAgIC8vLyBBIDxzZWUgY3JlZj0iVGFzayIvPiByZXByZXNlbnRpbmcgdGhlIDxzZWUgY3JlZj0iSUFwaVJlc3BvbnNlIi8+IGluc3RhbmNlIGNvbnRhaW5pbmcgdGhlIHJlc3VsdDoKICAgICAgICAvLy8gPGxpc3QgdHlwZT0idGFibGUiPgogICAgICAgIC8vLyA8bGlzdGhlYWRlcj4KICAgICAgICAvLy8gPHRlcm0+U3RhdHVzPC90ZXJtPgogICAgICAgIC8vLyA8ZGVzY3JpcHRpb24+RGVzY3JpcHRpb248L2Rlc2NyaXB0aW9uPgogICAgICAgIC8vLyA8L2xpc3RoZWFkZXI+CiAgICAgICAgLy8vIDxpdGVtPgogICAgICAgIC8vLyA8dGVybT4yMDA8L3Rlcm0+CiAgICAgICAgLy8vIDxkZXNjcmlwdGlvbj5zdWNjZXNzZnVsIG9wZXJhdGlvbjwvZGVzY3JpcHRpb24+CiAgICAgICAgLy8vIDwvaXRlbT4KICAgICAgICAvLy8gPC9saXN0PgogICAgICAgIC8vLyA8L3JldHVybnM+CiAgICAgICAgW0hlYWRlcnMoIkFjY2VwdDogYXBwbGljYXRpb24vanNvbiIpXQogICAgICAgIFtQb3N0KCIvcGV0L3twZXRJZH0vdXBsb2FkSW1hZ2UiKV0KICAgICAgICBUYXNrPElBcGlSZXNwb25zZTxBcGlSZXNwb25zZT4+IFVwbG9hZEZpbGUobG9uZyBwZXRJZCwgW1F1ZXJ5XSBzdHJpbmcgYWRkaXRpb25hbE1ldGFkYXRhLCAgU3RyZWFtUGFydCBib2R5KTsKCiAgICAgICAgLy8vIDxzdW1tYXJ5PlJldHVybnMgcGV0IGludmVudG9yaWVzIGJ5IHN0YXR1czwvc3VtbWFyeT4KICAgICAgICAvLy8gPHJlbWFya3M+UmV0dXJucyBhIG1hcCBvZiBzdGF0dXMgY29kZXMgdG8gcXVhbnRpdGllczwvcmVtYXJrcz4KICAgICAgICAvLy8gPHJldHVybnM+c3VjY2Vzc2Z1bCBvcGVyYXRpb248L3JldHVybnM+CiAgICAgICAgLy8vIDxleGNlcHRpb24gY3JlZj0iQXBpRXhjZXB0aW9uIj5UaHJvd24gd2hlbiB0aGUgcmVxdWVzdCByZXR1cm5zIGEgbm9uLXN1Y2Nlc3Mgc3RhdHVzIGNvZGUuPC9leGNlcHRpb24+CiAgICAgICAgW0hlYWRlcnMoIkFjY2VwdDogYXBwbGljYXRpb24vanNvbiIpXQogICAgICAgIFtHZXQoIi9zdG9yZS9pbnZlbnRvcnkiKV0KICAgICAgICBUYXNrPElBcGlSZXNwb25zZTxJRGljdGlvbmFyeTxzdHJpbmcsIGludD4+PiBHZXRJbnZlbnRvcnkoKTsKCiAgICAgICAgLy8vIDxzdW1tYXJ5PlBsYWNlIGFuIG9yZGVyIGZvciBhIHBldDwvc3VtbWFyeT4KICAgICAgICAvLy8gPHJlbWFya3M+UGxhY2UgYSBuZXcgb3JkZXIgaW4gdGhlIHN0b3JlPC9yZW1hcmtzPgogICAgICAgIC8vLyA8cmV0dXJucz4KICAgICAgICAvLy8gQSA8c2VlIGNyZWY9IlRhc2siLz4gcmVwcmVzZW50aW5nIHRoZSA8c2VlIGNyZWY9IklBcGlSZXNwb25zZSIvPiBpbnN0YW5jZSBjb250YWluaW5nIHRoZSByZXN1bHQ6CiAgICAgICAgLy8vIDxsaXN0IHR5cGU9InRhYmxlIj4KICAgICAgICAvLy8gPGxpc3RoZWFkZXI+CiAgICAgICAgLy8vIDx0ZXJtPlN0YXR1czwvdGVybT4KICAgICAgICAvLy8gPGRlc2NyaXB0aW9uPkRlc2NyaXB0aW9uPC9kZXNjcmlwdGlvbj4KICAgICAgICAvLy8gPC9saXN0aGVhZGVyPgogICAgICAgIC8vLyA8aXRlbT4KICAgICAgICAvLy8gPHRlcm0+MjAwPC90ZXJtPgogICAgICAgIC8vLyA8ZGVzY3JpcHRpb24+c3VjY2Vzc2Z1bCBvcGVyYXRpb248L2Rlc2NyaXB0aW9uPgogICAgICAgIC8vLyA8L2l0ZW0+CiAgICAgICAgLy8vIDxpdGVtPgogICAgICAgIC8vLyA8dGVybT40MDU8L3Rlcm0+CiAgICAgICAgLy8vIDxkZXNjcmlwdGlvbj5JbnZhbGlkIGlucHV0PC9kZXNjcmlwdGlvbj4KICAgICAgICAvLy8gPC9pdGVtPgogICAgICAgIC8vLyA8L2xpc3Q+CiAgICAgICAgLy8vIDwvcmV0dXJucz4KICAgICAgICBbSGVhZGVycygiQWNjZXB0OiBhcHBsaWNhdGlvbi9qc29uIildCiAgICAgICAgW1Bvc3QoIi9zdG9yZS9vcmRlciIpXQogICAgICAgIFRhc2s8SUFwaVJlc3BvbnNlPE9yZGVyPj4gUGxhY2VPcmRlcihbQm9keV0gT3JkZXIgYm9keSk7CgogICAgICAgIC8vLyA8c3VtbWFyeT5GaW5kIHB1cmNoYXNlIG9yZGVyIGJ5IElEPC9zdW1tYXJ5PgogICAgICAgIC8vLyA8cmVtYXJrcz5Gb3IgdmFsaWQgcmVzcG9uc2UgdHJ5IGludGVnZXIgSURzIHdpdGggdmFsdWUgPD0gNSBvciA+IDEwLiBPdGhlciB2YWx1ZXMgd2lsbCBnZW5lcmF0ZWQgZXhjZXB0aW9uczwvcmVtYXJrcz4KICAgICAgICAvLy8gPHBhcmFtIG5hbWU9Im9yZGVySWQiPklEIG9mIG9yZGVyIHRoYXQgbmVlZHMgdG8gYmUgZmV0Y2hlZDwvcGFyYW0+CiAgICAgICAgLy8vIDxyZXR1cm5zPgogICAgICAgIC8vLyBBIDxzZWUgY3JlZj0iVGFzayIvPiByZXByZXNlbnRpbmcgdGhlIDxzZWUgY3JlZj0iSUFwaVJlc3BvbnNlIi8+IGluc3RhbmNlIGNvbnRhaW5pbmcgdGhlIHJlc3VsdDoKICAgICAgICAvLy8gPGxpc3QgdHlwZT0idGFibGUiPgogICAgICAgIC8vLyA8bGlzdGhlYWRlcj4KICAgICAgICAvLy8gPHRlcm0+U3RhdHVzPC90ZXJtPgogICAgICAgIC8vLyA8ZGVzY3JpcHRpb24+RGVzY3JpcHRpb248L2Rlc2NyaXB0aW9uPgogICAgICAgIC8vLyA8L2xpc3RoZWFkZXI+CiAgICAgICAgLy8vIDxpdGVtPgogICAgICAgIC8vLyA8dGVybT4yMDA8L3Rlcm0+CiAgICAgICAgLy8vIDxkZXNjcmlwdGlvbj5zdWNjZXNzZnVsIG9wZXJhdGlvbjwvZGVzY3JpcHRpb24+CiAgICAgICAgLy8vIDwvaXRlbT4KICAgICAgICAvLy8gPGl0ZW0+CiAgICAgICAgLy8vIDx0ZXJtPjQwMDwvdGVybT4KICAgICAgICAvLy8gPGRlc2NyaXB0aW9uPkludmFsaWQgSUQgc3VwcGxpZWQ8L2Rlc2NyaXB0aW9uPgogICAgICAgIC8vLyA8L2l0ZW0+CiAgICAgICAgLy8vIDxpdGVtPgogICAgICAgIC8vLyA8dGVybT40MDQ8L3Rlcm0+CiAgICAgICAgLy8vIDxkZXNjcmlwdGlvbj5PcmRlciBub3QgZm91bmQ8L2Rlc2NyaXB0aW9uPgogICAgICAgIC8vLyA8L2l0ZW0+CiAgICAgICAgLy8vIDwvbGlzdD4KICAgICAgICAvLy8gPC9yZXR1cm5zPgogICAgICAgIFtIZWFkZXJzKCJBY2NlcHQ6IGFwcGxpY2F0aW9uL2pzb24iKV0KICAgICAgICBbR2V0KCIvc3RvcmUvb3JkZXIve29yZGVySWR9IildCiAgICAgICAgVGFzazxJQXBpUmVzcG9uc2U8T3JkZXI+PiBHZXRPcmRlckJ5SWQobG9uZyBvcmRlcklkKTsKCiAgICAgICAgLy8vIDxzdW1tYXJ5PkRlbGV0ZSBwdXJjaGFzZSBvcmRlciBieSBJRDwvc3VtbWFyeT4KICAgICAgICAvLy8gPHJlbWFya3M+Rm9yIHZhbGlkIHJlc3BvbnNlIHRyeSBpbnRlZ2VyIElEcyB3aXRoIHZhbHVlIDwgMTAwMC4gQW55dGhpbmcgYWJvdmUgMTAwMCBvciBub25pbnRlZ2VycyB3aWxsIGdlbmVyYXRlIEFQSSBlcnJvcnM8L3JlbWFya3M+CiAgICAgICAgLy8vIDxwYXJhbSBuYW1lPSJvcmRlcklkIj5JRCBvZiB0aGUgb3JkZXIgdGhhdCBuZWVkcyB0byBiZSBkZWxldGVkPC9wYXJhbT4KICAgICAgICAvLy8gPHJldHVybnM+CiAgICAgICAgLy8vIEEgPHNlZSBjcmVmPSJUYXNrIi8+IHJlcHJlc2VudGluZyB0aGUgPHNlZSBjcmVmPSJJQXBpUmVzcG9uc2UiLz4gaW5zdGFuY2UgY29udGFpbmluZyB0aGUgcmVzdWx0OgogICAgICAgIC8vLyA8bGlzdCB0eXBlPSJ0YWJsZSI+CiAgICAgICAgLy8vIDxsaXN0aGVhZGVyPgogICAgICAgIC8vLyA8dGVybT5TdGF0dXM8L3Rlcm0+CiAgICAgICAgLy8vIDxkZXNjcmlwdGlvbj5EZXNjcmlwdGlvbjwvZGVzY3JpcHRpb24+CiAgICAgICAgLy8vIDwvbGlzdGhlYWRlcj4KICAgICAgICAvLy8gPGl0ZW0+CiAgICAgICAgLy8vIDx0ZXJtPjQwMDwvdGVybT4KICAgICAgICAvLy8gPGRlc2NyaXB0aW9uPkludmFsaWQgSUQgc3VwcGxpZWQ8L2Rlc2NyaXB0aW9uPgogICAgICAgIC8vLyA8L2l0ZW0+CiAgICAgICAgLy8vIDxpdGVtPgogICAgICAgIC8vLyA8dGVybT40MDQ8L3Rlcm0+CiAgICAgICAgLy8vIDxkZXNjcmlwdGlvbj5PcmRlciBub3QgZm91bmQ8L2Rlc2NyaXB0aW9uPgogICAgICAgIC8vLyA8L2l0ZW0+CiAgICAgICAgLy8vIDwvbGlzdD4KICAgICAgICAvLy8gPC9yZXR1cm5zPgogICAgICAgIFtEZWxldGUoIi9zdG9yZS9vcmRlci97b3JkZXJJZH0iKV0KICAgICAgICBUYXNrPElBcGlSZXNwb25zZT4gRGVsZXRlT3JkZXIobG9uZyBvcmRlcklkKTsKCiAgICAgICAgLy8vIDxzdW1tYXJ5PkNyZWF0ZSB1c2VyPC9zdW1tYXJ5PgogICAgICAgIC8vLyA8cmVtYXJrcz5UaGlzIGNhbiBvbmx5IGJlIGRvbmUgYnkgdGhlIGxvZ2dlZCBpbiB1c2VyLjwvcmVtYXJrcz4KICAgICAgICAvLy8gPHBhcmFtIG5hbWU9ImJvZHkiPkNyZWF0ZWQgdXNlciBvYmplY3Q8L3BhcmFtPgogICAgICAgIC8vLyA8cmV0dXJucz5BIDxzZWUgY3JlZj0iVGFzayIvPiByZXByZXNlbnRpbmcgdGhlIDxzZWUgY3JlZj0iSUFwaVJlc3BvbnNlIi8+IGluc3RhbmNlIGNvbnRhaW5pbmcgdGhlIHJlc3VsdC48L3JldHVybnM+CiAgICAgICAgW0hlYWRlcnMoIkFjY2VwdDogYXBwbGljYXRpb24vanNvbiwgYXBwbGljYXRpb24veG1sIildCiAgICAgICAgW1Bvc3QoIi91c2VyIildCiAgICAgICAgVGFzazxJQXBpUmVzcG9uc2U+IENyZWF0ZVVzZXIoW0JvZHldIFVzZXIgYm9keSk7CgogICAgICAgIC8vLyA8c3VtbWFyeT5DcmVhdGVzIGxpc3Qgb2YgdXNlcnMgd2l0aCBnaXZlbiBpbnB1dCBhcnJheTwvc3VtbWFyeT4KICAgICAgICAvLy8gPHJlbWFya3M+Q3JlYXRlcyBsaXN0IG9mIHVzZXJzIHdpdGggZ2l2ZW4gaW5wdXQgYXJyYXk8L3JlbWFya3M+CiAgICAgICAgLy8vIDxyZXR1cm5zPgogICAgICAgIC8vLyBBIDxzZWUgY3JlZj0iVGFzayIvPiByZXByZXNlbnRpbmcgdGhlIDxzZWUgY3JlZj0iSUFwaVJlc3BvbnNlIi8+IGluc3RhbmNlIGNvbnRhaW5pbmcgdGhlIHJlc3VsdDoKICAgICAgICAvLy8gPGxpc3QgdHlwZT0idGFibGUiPgogICAgICAgIC8vLyA8bGlzdGhlYWRlcj4KICAgICAgICAvLy8gPHRlcm0+U3RhdHVzPC90ZXJtPgogICAgICAgIC8vLyA8ZGVzY3JpcHRpb24+RGVzY3JpcHRpb248L2Rlc2NyaXB0aW9uPgogICAgICAgIC8vLyA8L2xpc3RoZWFkZXI+CiAgICAgICAgLy8vIDxpdGVtPgogICAgICAgIC8vLyA8dGVybT4yMDA8L3Rlcm0+CiAgICAgICAgLy8vIDxkZXNjcmlwdGlvbj5TdWNjZXNzZnVsIG9wZXJhdGlvbjwvZGVzY3JpcHRpb24+CiAgICAgICAgLy8vIDwvaXRlbT4KICAgICAgICAvLy8gPC9saXN0PgogICAgICAgIC8vLyA8L3JldHVybnM+CiAgICAgICAgW0hlYWRlcnMoIkFjY2VwdDogYXBwbGljYXRpb24veG1sLCBhcHBsaWNhdGlvbi9qc29uIildCiAgICAgICAgW1Bvc3QoIi91c2VyL2NyZWF0ZVdpdGhMaXN0IildCiAgICAgICAgVGFzazxJQXBpUmVzcG9uc2U8VXNlcj4+IENyZWF0ZVVzZXJzV2l0aExpc3RJbnB1dChbQm9keV0gSUVudW1lcmFibGU8VXNlcj4gYm9keSk7CgogICAgICAgIC8vLyA8c3VtbWFyeT5Mb2dzIHVzZXIgaW50byB0aGUgc3lzdGVtPC9zdW1tYXJ5PgogICAgICAgIC8vLyA8cGFyYW0gbmFtZT0idXNlcm5hbWUiPlRoZSB1c2VyIG5hbWUgZm9yIGxvZ2luPC9wYXJhbT4KICAgICAgICAvLy8gPHBhcmFtIG5hbWU9InBhc3N3b3JkIj5UaGUgcGFzc3dvcmQgZm9yIGxvZ2luIGluIGNsZWFyIHRleHQ8L3BhcmFtPgogICAgICAgIC8vLyA8cmV0dXJucz4KICAgICAgICAvLy8gQSA8c2VlIGNyZWY9IlRhc2siLz4gcmVwcmVzZW50aW5nIHRoZSA8c2VlIGNyZWY9IklBcGlSZXNwb25zZSIvPiBpbnN0YW5jZSBjb250YWluaW5nIHRoZSByZXN1bHQ6CiAgICAgICAgLy8vIDxsaXN0IHR5cGU9InRhYmxlIj4KICAgICAgICAvLy8gPGxpc3RoZWFkZXI+CiAgICAgICAgLy8vIDx0ZXJtPlN0YXR1czwvdGVybT4KICAgICAgICAvLy8gPGRlc2NyaXB0aW9uPkRlc2NyaXB0aW9uPC9kZXNjcmlwdGlvbj4KICAgICAgICAvLy8gPC9saXN0aGVhZGVyPgogICAgICAgIC8vLyA8aXRlbT4KICAgICAgICAvLy8gPHRlcm0+MjAwPC90ZXJtPgogICAgICAgIC8vLyA8ZGVzY3JpcHRpb24+c3VjY2Vzc2Z1bCBvcGVyYXRpb248L2Rlc2NyaXB0aW9uPgogICAgICAgIC8vLyA8L2l0ZW0+CiAgICAgICAgLy8vIDxpdGVtPgogICAgICAgIC8vLyA8dGVybT40MDA8L3Rlcm0+CiAgICAgICAgLy8vIDxkZXNjcmlwdGlvbj5JbnZhbGlkIHVzZXJuYW1lL3Bhc3N3b3JkIHN1cHBsaWVkPC9kZXNjcmlwdGlvbj4KICAgICAgICAvLy8gPC9pdGVtPgogICAgICAgIC8vLyA8L2xpc3Q+CiAgICAgICAgLy8vIDwvcmV0dXJucz4KICAgICAgICBbSGVhZGVycygiQWNjZXB0OiBhcHBsaWNhdGlvbi9qc29uIildCiAgICAgICAgW0dldCgiL3VzZXIvbG9naW4iKV0KICAgICAgICBUYXNrPElBcGlSZXNwb25zZTxzdHJpbmc+PiBMb2dpblVzZXIoW1F1ZXJ5XSBzdHJpbmcgdXNlcm5hbWUsIFtRdWVyeV0gc3RyaW5nIHBhc3N3b3JkKTsKCiAgICAgICAgLy8vIDxzdW1tYXJ5PkxvZ3Mgb3V0IGN1cnJlbnQgbG9nZ2VkIGluIHVzZXIgc2Vzc2lvbjwvc3VtbWFyeT4KICAgICAgICAvLy8gPHJldHVybnM+QSA8c2VlIGNyZWY9IlRhc2siLz4gcmVwcmVzZW50aW5nIHRoZSA8c2VlIGNyZWY9IklBcGlSZXNwb25zZSIvPiBpbnN0YW5jZSBjb250YWluaW5nIHRoZSByZXN1bHQuPC9yZXR1cm5zPgogICAgICAgIFtHZXQoIi91c2VyL2xvZ291dCIpXQogICAgICAgIFRhc2s8SUFwaVJlc3BvbnNlPiBMb2dvdXRVc2VyKCk7CgogICAgICAgIC8vLyA8c3VtbWFyeT5HZXQgdXNlciBieSB1c2VyIG5hbWU8L3N1bW1hcnk+CiAgICAgICAgLy8vIDxwYXJhbSBuYW1lPSJ1c2VybmFtZSI+VGhlIG5hbWUgdGhhdCBuZWVkcyB0byBiZSBmZXRjaGVkLiBVc2UgdXNlcjEgZm9yIHRlc3RpbmcuPC9wYXJhbT4KICAgICAgICAvLy8gPHJldHVybnM+CiAgICAgICAgLy8vIEEgPHNlZSBjcmVmPSJUYXNrIi8+IHJlcHJlc2VudGluZyB0aGUgPHNlZSBjcmVmPSJJQXBpUmVzcG9uc2UiLz4gaW5zdGFuY2UgY29udGFpbmluZyB0aGUgcmVzdWx0OgogICAgICAgIC8vLyA8bGlzdCB0eXBlPSJ0YWJsZSI+CiAgICAgICAgLy8vIDxsaXN0aGVhZGVyPgogICAgICAgIC8vLyA8dGVybT5TdGF0dXM8L3Rlcm0+CiAgICAgICAgLy8vIDxkZXNjcmlwdGlvbj5EZXNjcmlwdGlvbjwvZGVzY3JpcHRpb24+CiAgICAgICAgLy8vIDwvbGlzdGhlYWRlcj4KICAgICAgICAvLy8gPGl0ZW0+CiAgICAgICAgLy8vIDx0ZXJtPjIwMDwvdGVybT4KICAgICAgICAvLy8gPGRlc2NyaXB0aW9uPnN1Y2Nlc3NmdWwgb3BlcmF0aW9uPC9kZXNjcmlwdGlvbj4KICAgICAgICAvLy8gPC9pdGVtPgogICAgICAgIC8vLyA8aXRlbT4KICAgICAgICAvLy8gPHRlcm0+NDAwPC90ZXJtPgogICAgICAgIC8vLyA8ZGVzY3JpcHRpb24+SW52YWxpZCB1c2VybmFtZSBzdXBwbGllZDwvZGVzY3JpcHRpb24+CiAgICAgICAgLy8vIDwvaXRlbT4KICAgICAgICAvLy8gPGl0ZW0+CiAgICAgICAgLy8vIDx0ZXJtPjQwNDwvdGVybT4KICAgICAgICAvLy8gPGRlc2NyaXB0aW9uPlVzZXIgbm90IGZvdW5kPC9kZXNjcmlwdGlvbj4KICAgICAgICAvLy8gPC9pdGVtPgogICAgICAgIC8vLyA8L2xpc3Q+CiAgICAgICAgLy8vIDwvcmV0dXJucz4KICAgICAgICBbSGVhZGVycygiQWNjZXB0OiBhcHBsaWNhdGlvbi9qc29uIildCiAgICAgICAgW0dldCgiL3VzZXIve3VzZXJuYW1lfSIpXQogICAgICAgIFRhc2s8SUFwaVJlc3BvbnNlPFVzZXI+PiBHZXRVc2VyQnlOYW1lKHN0cmluZyB1c2VybmFtZSk7CgogICAgICAgIC8vLyA8c3VtbWFyeT5VcGRhdGUgdXNlcjwvc3VtbWFyeT4KICAgICAgICAvLy8gPHJlbWFya3M+VGhpcyBjYW4gb25seSBiZSBkb25lIGJ5IHRoZSBsb2dnZWQgaW4gdXNlci48L3JlbWFya3M+CiAgICAgICAgLy8vIDxwYXJhbSBuYW1lPSJ1c2VybmFtZSI+bmFtZSB0aGF0IG5lZWQgdG8gYmUgZGVsZXRlZDwvcGFyYW0+CiAgICAgICAgLy8vIDxwYXJhbSBuYW1lPSJib2R5Ij5VcGRhdGUgYW4gZXhpc3RlbnQgdXNlciBpbiB0aGUgc3RvcmU8L3BhcmFtPgogICAgICAgIC8vLyA8cmV0dXJucz5BIDxzZWUgY3JlZj0iVGFzayIvPiByZXByZXNlbnRpbmcgdGhlIDxzZWUgY3JlZj0iSUFwaVJlc3BvbnNlIi8+IGluc3RhbmNlIGNvbnRhaW5pbmcgdGhlIHJlc3VsdC48L3JldHVybnM+CiAgICAgICAgW1B1dCgiL3VzZXIve3VzZXJuYW1lfSIpXQogICAgICAgIFRhc2s8SUFwaVJlc3BvbnNlPiBVcGRhdGVVc2VyKHN0cmluZyB1c2VybmFtZSwgW0JvZHldIFVzZXIgYm9keSk7CgogICAgICAgIC8vLyA8c3VtbWFyeT5EZWxldGUgdXNlcjwvc3VtbWFyeT4KICAgICAgICAvLy8gPHJlbWFya3M+VGhpcyBjYW4gb25seSBiZSBkb25lIGJ5IHRoZSBsb2dnZWQgaW4gdXNlci48L3JlbWFya3M+CiAgICAgICAgLy8vIDxwYXJhbSBuYW1lPSJ1c2VybmFtZSI+VGhlIG5hbWUgdGhhdCBuZWVkcyB0byBiZSBkZWxldGVkPC9wYXJhbT4KICAgICAgICAvLy8gPHJldHVybnM+CiAgICAgICAgLy8vIEEgPHNlZSBjcmVmPSJUYXNrIi8+IHJlcHJlc2VudGluZyB0aGUgPHNlZSBjcmVmPSJJQXBpUmVzcG9uc2UiLz4gaW5zdGFuY2UgY29udGFpbmluZyB0aGUgcmVzdWx0OgogICAgICAgIC8vLyA8bGlzdCB0eXBlPSJ0YWJsZSI+CiAgICAgICAgLy8vIDxsaXN0aGVhZGVyPgogICAgICAgIC8vLyA8dGVybT5TdGF0dXM8L3Rlcm0+CiAgICAgICAgLy8vIDxkZXNjcmlwdGlvbj5EZXNjcmlwdGlvbjwvZGVzY3JpcHRpb24+CiAgICAgICAgLy8vIDwvbGlzdGhlYWRlcj4KICAgICAgICAvLy8gPGl0ZW0+CiAgICAgICAgLy8vIDx0ZXJtPjQwMDwvdGVybT4KICAgICAgICAvLy8gPGRlc2NyaXB0aW9uPkludmFsaWQgdXNlcm5hbWUgc3VwcGxpZWQ8L2Rlc2NyaXB0aW9uPgogICAgICAgIC8vLyA8L2l0ZW0+CiAgICAgICAgLy8vIDxpdGVtPgogICAgICAgIC8vLyA8dGVybT40MDQ8L3Rlcm0+CiAgICAgICAgLy8vIDxkZXNjcmlwdGlvbj5Vc2VyIG5vdCBmb3VuZDwvZGVzY3JpcHRpb24+CiAgICAgICAgLy8vIDwvaXRlbT4KICAgICAgICAvLy8gPC9saXN0PgogICAgICAgIC8vLyA8L3JldHVybnM+CiAgICAgICAgW0RlbGV0ZSgiL3VzZXIve3VzZXJuYW1lfSIpXQogICAgICAgIFRhc2s8SUFwaVJlc3BvbnNlPiBEZWxldGVVc2VyKHN0cmluZyB1c2VybmFtZSk7CiAgICB9Cn0KYGBgCgpIZXJlJ3MgYW4gZXhhbXBsZSBnZW5lcmF0ZWQgb3V0cHV0IGZyb20gdGhlIFtTd2FnZ2VyIFBldHN0b3JlIGV4YW1wbGVdKGh0dHBzOi8vcGV0c3RvcmUzLnN3YWdnZXIuaW8pIGNvbmZpZ3VyZWQgdG8gZ2VuZXJhdGUgYW4gaW50ZXJmYWNlIGZvciBlYWNoIGVuZHBvaW50CgoqKkNMSSBUb29sKioKCmBgYGJhc2gKJCByZWZpdHRlciAuL29wZW5hcGkuanNvbiAtLW5hbWVzcGFjZSAiWW91ci5OYW1lc3BhY2UuT2YuQ2hvaWNlLkdlbmVyYXRlZENvZGUiIC0tbXVsdGlwbGUtaW50ZXJmYWNlcyBCeUVuZHBvaW50CmBgYAoKKipTb3VyY2UgR2VuZXJhdG9yICoqKi5yZWZpdHRlcioqKiBmaWxlKioKCmBgYGpzb24KewogICJvcGVuQXBpUGF0aCI6ICIuL29wZW5hcGkuanNvbiIsCiAgIm5hbWVzcGFjZSI6ICJZb3VyLk5hbWVzcGFjZS5PZi5DaG9pY2UuR2VuZXJhdGVkQ29kZSIsCiAgIm11bHRpcGxlSW50ZXJmYWNlcyI6ICJCeUVuZHBvaW50Igp9CmBgYAoKKipPdXRwdXQqKgoKYGBgY3MKLy8vIDxzdW1tYXJ5PlVwZGF0ZSBhbiBleGlzdGluZyBwZXQ8L3N1bW1hcnk+CltTeXN0ZW0uQ29kZURvbS5Db21waWxlci5HZW5lcmF0ZWRDb2RlKCJSZWZpdHRlciIsICIxLjAuMC4wIildCnB1YmxpYyBwYXJ0aWFsIGludGVyZmFjZSBJVXBkYXRlUGV0RW5kcG9pbnQKewogICAgLy8vIDxzdW1tYXJ5PlVwZGF0ZSBhbiBleGlzdGluZyBwZXQ8L3N1bW1hcnk+CiAgICAvLy8gPHJlbWFya3M+VXBkYXRlIGFuIGV4aXN0aW5nIHBldCBieSBJZDwvcmVtYXJrcz4KICAgIC8vLyA8cGFyYW0gbmFtZT0iYm9keSI+VXBkYXRlIGFuIGV4aXN0ZW50IHBldCBpbiB0aGUgc3RvcmU8L3BhcmFtPgogICAgLy8vIDxyZXR1cm5zPlN1Y2Nlc3NmdWwgb3BlcmF0aW9uPC9yZXR1cm5zPgogICAgLy8vIDxleGNlcHRpb24gY3JlZj0iQXBpRXhjZXB0aW9uIj4KICAgIC8vLyBUaHJvd24gd2hlbiB0aGUgcmVxdWVzdCByZXR1cm5zIGEgbm9uLXN1Y2Nlc3Mgc3RhdHVzIGNvZGU6CiAgICAvLy8gPGxpc3QgdHlwZT0idGFibGUiPgogICAgLy8vIDxsaXN0aGVhZGVyPgogICAgLy8vIDx0ZXJtPlN0YXR1czwvdGVybT4KICAgIC8vLyA8ZGVzY3JpcHRpb24+RGVzY3JpcHRpb248L2Rlc2NyaXB0aW9uPgogICAgLy8vIDwvbGlzdGhlYWRlcj4KICAgIC8vLyA8aXRlbT4KICAgIC8vLyA8dGVybT40MDA8L3Rlcm0+CiAgICAvLy8gPGRlc2NyaXB0aW9uPkludmFsaWQgSUQgc3VwcGxpZWQ8L2Rlc2NyaXB0aW9uPgogICAgLy8vIDwvaXRlbT4KICAgIC8vLyA8aXRlbT4KICAgIC8vLyA8dGVybT40MDQ8L3Rlcm0+CiAgICAvLy8gPGRlc2NyaXB0aW9uPlBldCBub3QgZm91bmQ8L2Rlc2NyaXB0aW9uPgogICAgLy8vIDwvaXRlbT4KICAgIC8vLyA8aXRlbT4KICAgIC8vLyA8dGVybT40MDU8L3Rlcm0+CiAgICAvLy8gPGRlc2NyaXB0aW9uPlZhbGlkYXRpb24gZXhjZXB0aW9uPC9kZXNjcmlwdGlvbj4KICAgIC8vLyA8L2l0ZW0+CiAgICAvLy8gPC9saXN0PgogICAgLy8vIDwvZXhjZXB0aW9uPgogICAgW0hlYWRlcnMoIkFjY2VwdDogYXBwbGljYXRpb24veG1sLCBhcHBsaWNhdGlvbi9qc29uIildCiAgICBbUHV0KCIvcGV0IildCiAgICBUYXNrPFBldD4gRXhlY3V0ZShbQm9keV0gUGV0IGJvZHkpOwp9CgovLy8gPHN1bW1hcnk+QWRkIGEgbmV3IHBldCB0byB0aGUgc3RvcmU8L3N1bW1hcnk+CltTeXN0ZW0uQ29kZURvbS5Db21waWxlci5HZW5lcmF0ZWRDb2RlKCJSZWZpdHRlciIsICIxLjAuMC4wIildCnB1YmxpYyBwYXJ0aWFsIGludGVyZmFjZSBJQWRkUGV0RW5kcG9pbnQKewogICAgLy8vIDxzdW1tYXJ5PkFkZCBhIG5ldyBwZXQgdG8gdGhlIHN0b3JlPC9zdW1tYXJ5PgogICAgLy8vIDxyZW1hcmtzPkFkZCBhIG5ldyBwZXQgdG8gdGhlIHN0b3JlPC9yZW1hcmtzPgogICAgLy8vIDxwYXJhbSBuYW1lPSJib2R5Ij5DcmVhdGUgYSBuZXcgcGV0IGluIHRoZSBzdG9yZTwvcGFyYW0+CiAgICAvLy8gPHJldHVybnM+U3VjY2Vzc2Z1bCBvcGVyYXRpb248L3JldHVybnM+CiAgICAvLy8gPGV4Y2VwdGlvbiBjcmVmPSJBcGlFeGNlcHRpb24iPgogICAgLy8vIFRocm93biB3aGVuIHRoZSByZXF1ZXN0IHJldHVybnMgYSBub24tc3VjY2VzcyBzdGF0dXMgY29kZToKICAgIC8vLyA8bGlzdCB0eXBlPSJ0YWJsZSI+CiAgICAvLy8gPGxpc3RoZWFkZXI+CiAgICAvLy8gPHRlcm0+U3RhdHVzPC90ZXJtPgogICAgLy8vIDxkZXNjcmlwdGlvbj5EZXNjcmlwdGlvbjwvZGVzY3JpcHRpb24+CiAgICAvLy8gPC9saXN0aGVhZGVyPgogICAgLy8vIDxpdGVtPgogICAgLy8vIDx0ZXJtPjQwNTwvdGVybT4KICAgIC8vLyA8ZGVzY3JpcHRpb24+SW52YWxpZCBpbnB1dDwvZGVzY3JpcHRpb24+CiAgICAvLy8gPC9pdGVtPgogICAgLy8vIDwvbGlzdD4KICAgIC8vLyA8L2V4Y2VwdGlvbj4KICAgIFtIZWFkZXJzKCJBY2NlcHQ6IGFwcGxpY2F0aW9uL3htbCwgYXBwbGljYXRpb24vanNvbiIpXQogICAgW1Bvc3QoIi9wZXQiKV0KICAgIFRhc2s8UGV0PiBFeGVjdXRlKFtCb2R5XSBQZXQgYm9keSk7Cn0KCi8vLyA8c3VtbWFyeT5GaW5kcyBQZXRzIGJ5IHN0YXR1czwvc3VtbWFyeT4KW1N5c3RlbS5Db2RlRG9tLkNvbXBpbGVyLkdlbmVyYXRlZENvZGUoIlJlZml0dGVyIiwgIjEuMC4wLjAiKV0KcHVibGljIHBhcnRpYWwgaW50ZXJmYWNlIElGaW5kUGV0c0J5U3RhdHVzRW5kcG9pbnQKewogICAgLy8vIDxzdW1tYXJ5PkZpbmRzIFBldHMgYnkgc3RhdHVzPC9zdW1tYXJ5PgogICAgLy8vIDxyZW1hcmtzPk11bHRpcGxlIHN0YXR1cyB2YWx1ZXMgY2FuIGJlIHByb3ZpZGVkIHdpdGggY29tbWEgc2VwYXJhdGVkIHN0cmluZ3M8L3JlbWFya3M+CiAgICAvLy8gPHBhcmFtIG5hbWU9InN0YXR1cyI+U3RhdHVzIHZhbHVlcyB0aGF0IG5lZWQgdG8gYmUgY29uc2lkZXJlZCBmb3IgZmlsdGVyPC9wYXJhbT4KICAgIC8vLyA8cmV0dXJucz5zdWNjZXNzZnVsIG9wZXJhdGlvbjwvcmV0dXJucz4KICAgIC8vLyA8ZXhjZXB0aW9uIGNyZWY9IkFwaUV4Y2VwdGlvbiI+CiAgICAvLy8gVGhyb3duIHdoZW4gdGhlIHJlcXVlc3QgcmV0dXJucyBhIG5vbi1zdWNjZXNzIHN0YXR1cyBjb2RlOgogICAgLy8vIDxsaXN0IHR5cGU9InRhYmxlIj4KICAgIC8vLyA8bGlzdGhlYWRlcj4KICAgIC8vLyA8dGVybT5TdGF0dXM8L3Rlcm0+CiAgICAvLy8gPGRlc2NyaXB0aW9uPkRlc2NyaXB0aW9uPC9kZXNjcmlwdGlvbj4KICAgIC8vLyA8L2xpc3RoZWFkZXI+CiAgICAvLy8gPGl0ZW0+CiAgICAvLy8gPHRlcm0+NDAwPC90ZXJtPgogICAgLy8vIDxkZXNjcmlwdGlvbj5JbnZhbGlkIHN0YXR1cyB2YWx1ZTwvZGVzY3JpcHRpb24+CiAgICAvLy8gPC9pdGVtPgogICAgLy8vIDwvbGlzdD4KICAgIC8vLyA8L2V4Y2VwdGlvbj4KICAgIFtIZWFkZXJzKCJBY2NlcHQ6IGFwcGxpY2F0aW9uL2pzb24iKV0KICAgIFtHZXQoIi9wZXQvZmluZEJ5U3RhdHVzIildCiAgICBUYXNrPElDb2xsZWN0aW9uPFBldD4+IEV4ZWN1dGUoW1F1ZXJ5XSBTdGF0dXM/IHN0YXR1cyk7Cn0KCi8vLyA8c3VtbWFyeT5GaW5kcyBQZXRzIGJ5IHRhZ3M8L3N1bW1hcnk+CltTeXN0ZW0uQ29kZURvbS5Db21waWxlci5HZW5lcmF0ZWRDb2RlKCJSZWZpdHRlciIsICIxLjAuMC4wIildCnB1YmxpYyBwYXJ0aWFsIGludGVyZmFjZSBJRmluZFBldHNCeVRhZ3NFbmRwb2ludAp7CiAgICAvLy8gPHN1bW1hcnk+RmluZHMgUGV0cyBieSB0YWdzPC9zdW1tYXJ5PgogICAgLy8vIDxyZW1hcmtzPk11bHRpcGxlIHRhZ3MgY2FuIGJlIHByb3ZpZGVkIHdpdGggY29tbWEgc2VwYXJhdGVkIHN0cmluZ3MuIFVzZSB0YWcxLCB0YWcyLCB0YWczIGZvciB0ZXN0aW5nLjwvcmVtYXJrcz4KICAgIC8vLyA8cGFyYW0gbmFtZT0idGFncyI+VGFncyB0byBmaWx0ZXIgYnk8L3BhcmFtPgogICAgLy8vIDxyZXR1cm5zPnN1Y2Nlc3NmdWwgb3BlcmF0aW9uPC9yZXR1cm5zPgogICAgLy8vIDxleGNlcHRpb24gY3JlZj0iQXBpRXhjZXB0aW9uIj4KICAgIC8vLyBUaHJvd24gd2hlbiB0aGUgcmVxdWVzdCByZXR1cm5zIGEgbm9uLXN1Y2Nlc3Mgc3RhdHVzIGNvZGU6CiAgICAvLy8gPGxpc3QgdHlwZT0idGFibGUiPgogICAgLy8vIDxsaXN0aGVhZGVyPgogICAgLy8vIDx0ZXJtPlN0YXR1czwvdGVybT4KICAgIC8vLyA8ZGVzY3JpcHRpb24+RGVzY3JpcHRpb248L2Rlc2NyaXB0aW9uPgogICAgLy8vIDwvbGlzdGhlYWRlcj4KICAgIC8vLyA8aXRlbT4KICAgIC8vLyA8dGVybT40MDA8L3Rlcm0+CiAgICAvLy8gPGRlc2NyaXB0aW9uPkludmFsaWQgdGFnIHZhbHVlPC9kZXNjcmlwdGlvbj4KICAgIC8vLyA8L2l0ZW0+CiAgICAvLy8gPC9saXN0PgogICAgLy8vIDwvZXhjZXB0aW9uPgogICAgW0hlYWRlcnMoIkFjY2VwdDogYXBwbGljYXRpb24vanNvbiIpXQogICAgW0dldCgiL3BldC9maW5kQnlUYWdzIildCiAgICBUYXNrPElDb2xsZWN0aW9uPFBldD4+IEV4ZWN1dGUoW1F1ZXJ5KENvbGxlY3Rpb25Gb3JtYXQuTXVsdGkpXSBJRW51bWVyYWJsZTxzdHJpbmc+IHRhZ3MpOwp9CgovLy8gPHN1bW1hcnk+RmluZCBwZXQgYnkgSUQ8L3N1bW1hcnk+CltTeXN0ZW0uQ29kZURvbS5Db21waWxlci5HZW5lcmF0ZWRDb2RlKCJSZWZpdHRlciIsICIxLjAuMC4wIildCnB1YmxpYyBwYXJ0aWFsIGludGVyZmFjZSBJR2V0UGV0QnlJZEVuZHBvaW50CnsKICAgIC8vLyA8c3VtbWFyeT5GaW5kIHBldCBieSBJRDwvc3VtbWFyeT4KICAgIC8vLyA8cmVtYXJrcz5SZXR1cm5zIGEgc2luZ2xlIHBldDwvcmVtYXJrcz4KICAgIC8vLyA8cGFyYW0gbmFtZT0icGV0SWQiPklEIG9mIHBldCB0byByZXR1cm48L3BhcmFtPgogICAgLy8vIDxyZXR1cm5zPnN1Y2Nlc3NmdWwgb3BlcmF0aW9uPC9yZXR1cm5zPgogICAgLy8vIDxleGNlcHRpb24gY3JlZj0iQXBpRXhjZXB0aW9uIj4KICAgIC8vLyBUaHJvd24gd2hlbiB0aGUgcmVxdWVzdCByZXR1cm5zIGEgbm9uLXN1Y2Nlc3Mgc3RhdHVzIGNvZGU6CiAgICAvLy8gPGxpc3QgdHlwZT0idGFibGUiPgogICAgLy8vIDxsaXN0aGVhZGVyPgogICAgLy8vIDx0ZXJtPlN0YXR1czwvdGVybT4KICAgIC8vLyA8ZGVzY3JpcHRpb24+RGVzY3JpcHRpb248L2Rlc2NyaXB0aW9uPgogICAgLy8vIDwvbGlzdGhlYWRlcj4KICAgIC8vLyA8aXRlbT4KICAgIC8vLyA8dGVybT40MDA8L3Rlcm0+CiAgICAvLy8gPGRlc2NyaXB0aW9uPkludmFsaWQgSUQgc3VwcGxpZWQ8L2Rlc2NyaXB0aW9uPgogICAgLy8vIDwvaXRlbT4KICAgIC8vLyA8aXRlbT4KICAgIC8vLyA8dGVybT40MDQ8L3Rlcm0+CiAgICAvLy8gPGRlc2NyaXB0aW9uPlBldCBub3QgZm91bmQ8L2Rlc2NyaXB0aW9uPgogICAgLy8vIDwvaXRlbT4KICAgIC8vLyA8L2xpc3Q+CiAgICAvLy8gPC9leGNlcHRpb24+CiAgICBbSGVhZGVycygiQWNjZXB0OiBhcHBsaWNhdGlvbi94bWwsIGFwcGxpY2F0aW9uL2pzb24iKV0KICAgIFtHZXQoIi9wZXQve3BldElkfSIpXQogICAgVGFzazxQZXQ+IEV4ZWN1dGUobG9uZyBwZXRJZCk7Cn0KCi8vLyA8c3VtbWFyeT5VcGRhdGVzIGEgcGV0IGluIHRoZSBzdG9yZSB3aXRoIGZvcm0gZGF0YTwvc3VtbWFyeT4KW1N5c3RlbS5Db2RlRG9tLkNvbXBpbGVyLkdlbmVyYXRlZENvZGUoIlJlZml0dGVyIiwgIjEuMC4wLjAiKV0KcHVibGljIHBhcnRpYWwgaW50ZXJmYWNlIElVcGRhdGVQZXRXaXRoRm9ybUVuZHBvaW50CnsKICAgIC8vLyA8c3VtbWFyeT5VcGRhdGVzIGEgcGV0IGluIHRoZSBzdG9yZSB3aXRoIGZvcm0gZGF0YTwvc3VtbWFyeT4KICAgIC8vLyA8cGFyYW0gbmFtZT0icGV0SWQiPklEIG9mIHBldCB0aGF0IG5lZWRzIHRvIGJlIHVwZGF0ZWQ8L3BhcmFtPgogICAgLy8vIDxwYXJhbSBuYW1lPSJuYW1lIj5OYW1lIG9mIHBldCB0aGF0IG5lZWRzIHRvIGJlIHVwZGF0ZWQ8L3BhcmFtPgogICAgLy8vIDxwYXJhbSBuYW1lPSJzdGF0dXMiPlN0YXR1cyBvZiBwZXQgdGhhdCBuZWVkcyB0byBiZSB1cGRhdGVkPC9wYXJhbT4KICAgIC8vLyA8cmV0dXJucz5BIDxzZWUgY3JlZj0iVGFzayIvPiB0aGF0IGNvbXBsZXRlcyB3aGVuIHRoZSByZXF1ZXN0IGlzIGZpbmlzaGVkLjwvcmV0dXJucz4KICAgIC8vLyA8ZXhjZXB0aW9uIGNyZWY9IkFwaUV4Y2VwdGlvbiI+CiAgICAvLy8gVGhyb3duIHdoZW4gdGhlIHJlcXVlc3QgcmV0dXJucyBhIG5vbi1zdWNjZXNzIHN0YXR1cyBjb2RlOgogICAgLy8vIDxsaXN0IHR5cGU9InRhYmxlIj4KICAgIC8vLyA8bGlzdGhlYWRlcj4KICAgIC8vLyA8dGVybT5TdGF0dXM8L3Rlcm0+CiAgICAvLy8gPGRlc2NyaXB0aW9uPkRlc2NyaXB0aW9uPC9kZXNjcmlwdGlvbj4KICAgIC8vLyA8L2xpc3RoZWFkZXI+CiAgICAvLy8gPGl0ZW0+CiAgICAvLy8gPHRlcm0+NDA1PC90ZXJtPgogICAgLy8vIDxkZXNjcmlwdGlvbj5JbnZhbGlkIGlucHV0PC9kZXNjcmlwdGlvbj4KICAgIC8vLyA8L2l0ZW0+CiAgICAvLy8gPC9saXN0PgogICAgLy8vIDwvZXhjZXB0aW9uPgogICAgW1Bvc3QoIi9wZXQve3BldElkfSIpXQogICAgVGFzayBFeGVjdXRlKGxvbmcgcGV0SWQsIFtRdWVyeV0gc3RyaW5nIG5hbWUsIFtRdWVyeV0gc3RyaW5nIHN0YXR1cyk7Cn0KCi8vLyA8c3VtbWFyeT5EZWxldGVzIGEgcGV0PC9zdW1tYXJ5PgpbU3lzdGVtLkNvZGVEb20uQ29tcGlsZXIuR2VuZXJhdGVkQ29kZSgiUmVmaXR0ZXIiLCAiMS4wLjAuMCIpXQpwdWJsaWMgcGFydGlhbCBpbnRlcmZhY2UgSURlbGV0ZVBldEVuZHBvaW50CnsKICAgIC8vLyA8c3VtbWFyeT5EZWxldGVzIGEgcGV0PC9zdW1tYXJ5PgogICAgLy8vIDxwYXJhbSBuYW1lPSJwZXRJZCI+UGV0IGlkIHRvIGRlbGV0ZTwvcGFyYW0+CiAgICAvLy8gPHJldHVybnM+QSA8c2VlIGNyZWY9IlRhc2siLz4gdGhhdCBjb21wbGV0ZXMgd2hlbiB0aGUgcmVxdWVzdCBpcyBmaW5pc2hlZC48L3JldHVybnM+CiAgICAvLy8gPGV4Y2VwdGlvbiBjcmVmPSJBcGlFeGNlcHRpb24iPgogICAgLy8vIFRocm93biB3aGVuIHRoZSByZXF1ZXN0IHJldHVybnMgYSBub24tc3VjY2VzcyBzdGF0dXMgY29kZToKICAgIC8vLyA8bGlzdCB0eXBlPSJ0YWJsZSI+CiAgICAvLy8gPGxpc3RoZWFkZXI+CiAgICAvLy8gPHRlcm0+U3RhdHVzPC90ZXJtPgogICAgLy8vIDxkZXNjcmlwdGlvbj5EZXNjcmlwdGlvbjwvZGVzY3JpcHRpb24+CiAgICAvLy8gPC9saXN0aGVhZGVyPgogICAgLy8vIDxpdGVtPgogICAgLy8vIDx0ZXJtPjQwMDwvdGVybT4KICAgIC8vLyA8ZGVzY3JpcHRpb24+SW52YWxpZCBwZXQgdmFsdWU8L2Rlc2NyaXB0aW9uPgogICAgLy8vIDwvaXRlbT4KICAgIC8vLyA8L2xpc3Q+CiAgICAvLy8gPC9leGNlcHRpb24+CiAgICBbRGVsZXRlKCIvcGV0L3twZXRJZH0iKV0KICAgIFRhc2sgRXhlY3V0ZShsb25nIHBldElkLCBbSGVhZGVyKCJhcGlfa2V5IildIHN0cmluZyBhcGlfa2V5KTsKfQoKLy8vIDxzdW1tYXJ5PnVwbG9hZHMgYW4gaW1hZ2U8L3N1bW1hcnk+CltTeXN0ZW0uQ29kZURvbS5Db21waWxlci5HZW5lcmF0ZWRDb2RlKCJSZWZpdHRlciIsICIxLjAuMC4wIildCnB1YmxpYyBwYXJ0aWFsIGludGVyZmFjZSBJVXBsb2FkRmlsZUVuZHBvaW50CnsKICAgIC8vLyA8c3VtbWFyeT51cGxvYWRzIGFuIGltYWdlPC9zdW1tYXJ5PgogICAgLy8vIDxwYXJhbSBuYW1lPSJwZXRJZCI+SUQgb2YgcGV0IHRvIHVwZGF0ZTwvcGFyYW0+CiAgICAvLy8gPHBhcmFtIG5hbWU9ImFkZGl0aW9uYWxNZXRhZGF0YSI+QWRkaXRpb25hbCBNZXRhZGF0YTwvcGFyYW0+CiAgICAvLy8gPHJldHVybnM+CiAgICAvLy8gQSA8c2VlIGNyZWY9IlRhc2siLz4gcmVwcmVzZW50aW5nIHRoZSA8c2VlIGNyZWY9IklBcGlSZXNwb25zZSIvPiBpbnN0YW5jZSBjb250YWluaW5nIHRoZSByZXN1bHQ6CiAgICAvLy8gPGxpc3QgdHlwZT0idGFibGUiPgogICAgLy8vIDxsaXN0aGVhZGVyPgogICAgLy8vIDx0ZXJtPlN0YXR1czwvdGVybT4KICAgIC8vLyA8ZGVzY3JpcHRpb24+RGVzY3JpcHRpb248L2Rlc2NyaXB0aW9uPgogICAgLy8vIDwvbGlzdGhlYWRlcj4KICAgIC8vLyA8aXRlbT4KICAgIC8vLyA8dGVybT4yMDA8L3Rlcm0+CiAgICAvLy8gPGRlc2NyaXB0aW9uPnN1Y2Nlc3NmdWwgb3BlcmF0aW9uPC9kZXNjcmlwdGlvbj4KICAgIC8vLyA8L2l0ZW0+CiAgICAvLy8gPC9saXN0PgogICAgLy8vIDwvcmV0dXJucz4KICAgIFtIZWFkZXJzKCJBY2NlcHQ6IGFwcGxpY2F0aW9uL2pzb24iKV0KICAgIFtQb3N0KCIvcGV0L3twZXRJZH0vdXBsb2FkSW1hZ2UiKV0KICAgIFRhc2s8QXBpUmVzcG9uc2U+IEV4ZWN1dGUobG9uZyBwZXRJZCwgW1F1ZXJ5XSBzdHJpbmcgYWRkaXRpb25hbE1ldGFkYXRhLCAgU3RyZWFtUGFydCBib2R5KTsKfQoKLy8vIDxzdW1tYXJ5PlJldHVybnMgcGV0IGludmVudG9yaWVzIGJ5IHN0YXR1czwvc3VtbWFyeT4KW1N5c3RlbS5Db2RlRG9tLkNvbXBpbGVyLkdlbmVyYXRlZENvZGUoIlJlZml0dGVyIiwgIjEuMC4wLjAiKV0KcHVibGljIHBhcnRpYWwgaW50ZXJmYWNlIElHZXRJbnZlbnRvcnlFbmRwb2ludAp7CiAgICAvLy8gPHN1bW1hcnk+UmV0dXJucyBwZXQgaW52ZW50b3JpZXMgYnkgc3RhdHVzPC9zdW1tYXJ5PgogICAgLy8vIDxyZW1hcmtzPlJldHVybnMgYSBtYXAgb2Ygc3RhdHVzIGNvZGVzIHRvIHF1YW50aXRpZXM8L3JlbWFya3M+CiAgICAvLy8gPHJldHVybnM+c3VjY2Vzc2Z1bCBvcGVyYXRpb248L3JldHVybnM+CiAgICAvLy8gPGV4Y2VwdGlvbiBjcmVmPSJBcGlFeGNlcHRpb24iPlRocm93biB3aGVuIHRoZSByZXF1ZXN0IHJldHVybnMgYSBub24tc3VjY2VzcyBzdGF0dXMgY29kZS48L2V4Y2VwdGlvbj4KICAgIFtIZWFkZXJzKCJBY2NlcHQ6IGFwcGxpY2F0aW9uL2pzb24iKV0KICAgIFtHZXQoIi9zdG9yZS9pbnZlbnRvcnkiKV0KICAgIFRhc2s8SURpY3Rpb25hcnk8c3RyaW5nLCBpbnQ+PiBFeGVjdXRlKCk7Cn0KCi8vLyA8c3VtbWFyeT5QbGFjZSBhbiBvcmRlciBmb3IgYSBwZXQ8L3N1bW1hcnk+CltTeXN0ZW0uQ29kZURvbS5Db21waWxlci5HZW5lcmF0ZWRDb2RlKCJSZWZpdHRlciIsICIxLjAuMC4wIildCnB1YmxpYyBwYXJ0aWFsIGludGVyZmFjZSBJUGxhY2VPcmRlckVuZHBvaW50CnsKICAgIC8vLyA8c3VtbWFyeT5QbGFjZSBhbiBvcmRlciBmb3IgYSBwZXQ8L3N1bW1hcnk+CiAgICAvLy8gPHJlbWFya3M+UGxhY2UgYSBuZXcgb3JkZXIgaW4gdGhlIHN0b3JlPC9yZW1hcmtzPgogICAgLy8vIDxyZXR1cm5zPnN1Y2Nlc3NmdWwgb3BlcmF0aW9uPC9yZXR1cm5zPgogICAgLy8vIDxleGNlcHRpb24gY3JlZj0iQXBpRXhjZXB0aW9uIj4KICAgIC8vLyBUaHJvd24gd2hlbiB0aGUgcmVxdWVzdCByZXR1cm5zIGEgbm9uLXN1Y2Nlc3Mgc3RhdHVzIGNvZGU6CiAgICAvLy8gPGxpc3QgdHlwZT0idGFibGUiPgogICAgLy8vIDxsaXN0aGVhZGVyPgogICAgLy8vIDx0ZXJtPlN0YXR1czwvdGVybT4KICAgIC8vLyA8ZGVzY3JpcHRpb24+RGVzY3JpcHRpb248L2Rlc2NyaXB0aW9uPgogICAgLy8vIDwvbGlzdGhlYWRlcj4KICAgIC8vLyA8aXRlbT4KICAgIC8vLyA8dGVybT40MDU8L3Rlcm0+CiAgICAvLy8gPGRlc2NyaXB0aW9uPkludmFsaWQgaW5wdXQ8L2Rlc2NyaXB0aW9uPgogICAgLy8vIDwvaXRlbT4KICAgIC8vLyA8L2xpc3Q+CiAgICAvLy8gPC9leGNlcHRpb24+CiAgICBbSGVhZGVycygiQWNjZXB0OiBhcHBsaWNhdGlvbi9qc29uIildCiAgICBbUG9zdCgiL3N0b3JlL29yZGVyIildCiAgICBUYXNrPE9yZGVyPiBFeGVjdXRlKFtCb2R5XSBPcmRlciBib2R5KTsKfQoKLy8vIDxzdW1tYXJ5PkZpbmQgcHVyY2hhc2Ugb3JkZXIgYnkgSUQ8L3N1bW1hcnk+CltTeXN0ZW0uQ29kZURvbS5Db21waWxlci5HZW5lcmF0ZWRDb2RlKCJSZWZpdHRlciIsICIxLjAuMC4wIildCnB1YmxpYyBwYXJ0aWFsIGludGVyZmFjZSBJR2V0T3JkZXJCeUlkRW5kcG9pbnQKewogICAgLy8vIDxzdW1tYXJ5PkZpbmQgcHVyY2hhc2Ugb3JkZXIgYnkgSUQ8L3N1bW1hcnk+CiAgICAvLy8gPHJlbWFya3M+Rm9yIHZhbGlkIHJlc3BvbnNlIHRyeSBpbnRlZ2VyIElEcyB3aXRoIHZhbHVlIDw9IDUgb3IgPiAxMC4gT3RoZXIgdmFsdWVzIHdpbGwgZ2VuZXJhdGVkIGV4Y2VwdGlvbnM8L3JlbWFya3M+CiAgICAvLy8gPHBhcmFtIG5hbWU9Im9yZGVySWQiPklEIG9mIG9yZGVyIHRoYXQgbmVlZHMgdG8gYmUgZmV0Y2hlZDwvcGFyYW0+CiAgICAvLy8gPHJldHVybnM+c3VjY2Vzc2Z1bCBvcGVyYXRpb248L3JldHVybnM+CiAgICAvLy8gPGV4Y2VwdGlvbiBjcmVmPSJBcGlFeGNlcHRpb24iPgogICAgLy8vIFRocm93biB3aGVuIHRoZSByZXF1ZXN0IHJldHVybnMgYSBub24tc3VjY2VzcyBzdGF0dXMgY29kZToKICAgIC8vLyA8bGlzdCB0eXBlPSJ0YWJsZSI+CiAgICAvLy8gPGxpc3RoZWFkZXI+CiAgICAvLy8gPHRlcm0+U3RhdHVzPC90ZXJtPgogICAgLy8vIDxkZXNjcmlwdGlvbj5EZXNjcmlwdGlvbjwvZGVzY3JpcHRpb24+CiAgICAvLy8gPC9saXN0aGVhZGVyPgogICAgLy8vIDxpdGVtPgogICAgLy8vIDx0ZXJtPjQwMDwvdGVybT4KICAgIC8vLyA8ZGVzY3JpcHRpb24+SW52YWxpZCBJRCBzdXBwbGllZDwvZGVzY3JpcHRpb24+CiAgICAvLy8gPC9pdGVtPgogICAgLy8vIDxpdGVtPgogICAgLy8vIDx0ZXJtPjQwNDwvdGVybT4KICAgIC8vLyA8ZGVzY3JpcHRpb24+T3JkZXIgbm90IGZvdW5kPC9kZXNjcmlwdGlvbj4KICAgIC8vLyA8L2l0ZW0+CiAgICAvLy8gPC9saXN0PgogICAgLy8vIDwvZXhjZXB0aW9uPgogICAgW0hlYWRlcnMoIkFjY2VwdDogYXBwbGljYXRpb24vanNvbiIpXQogICAgW0dldCgiL3N0b3JlL29yZGVyL3tvcmRlcklkfSIpXQogICAgVGFzazxPcmRlcj4gRXhlY3V0ZShsb25nIG9yZGVySWQpOwp9CgovLy8gPHN1bW1hcnk+RGVsZXRlIHB1cmNoYXNlIG9yZGVyIGJ5IElEPC9zdW1tYXJ5PgpbU3lzdGVtLkNvZGVEb20uQ29tcGlsZXIuR2VuZXJhdGVkQ29kZSgiUmVmaXR0ZXIiLCAiMS4wLjAuMCIpXQpwdWJsaWMgcGFydGlhbCBpbnRlcmZhY2UgSURlbGV0ZU9yZGVyRW5kcG9pbnQKewogICAgLy8vIDxzdW1tYXJ5PkRlbGV0ZSBwdXJjaGFzZSBvcmRlciBieSBJRDwvc3VtbWFyeT4KICAgIC8vLyA8cmVtYXJrcz5Gb3IgdmFsaWQgcmVzcG9uc2UgdHJ5IGludGVnZXIgSURzIHdpdGggdmFsdWUgPCAxMDAwLiBBbnl0aGluZyBhYm92ZSAxMDAwIG9yIG5vbmludGVnZXJzIHdpbGwgZ2VuZXJhdGUgQVBJIGVycm9yczwvcmVtYXJrcz4KICAgIC8vLyA8cGFyYW0gbmFtZT0ib3JkZXJJZCI+SUQgb2YgdGhlIG9yZGVyIHRoYXQgbmVlZHMgdG8gYmUgZGVsZXRlZDwvcGFyYW0+CiAgICAvLy8gPHJldHVybnM+QSA8c2VlIGNyZWY9IlRhc2siLz4gdGhhdCBjb21wbGV0ZXMgd2hlbiB0aGUgcmVxdWVzdCBpcyBmaW5pc2hlZC48L3JldHVybnM+CiAgICAvLy8gPGV4Y2VwdGlvbiBjcmVmPSJBcGlFeGNlcHRpb24iPgogICAgLy8vIFRocm93biB3aGVuIHRoZSByZXF1ZXN0IHJldHVybnMgYSBub24tc3VjY2VzcyBzdGF0dXMgY29kZToKICAgIC8vLyA8bGlzdCB0eXBlPSJ0YWJsZSI+CiAgICAvLy8gPGxpc3RoZWFkZXI+CiAgICAvLy8gPHRlcm0+U3RhdHVzPC90ZXJtPgogICAgLy8vIDxkZXNjcmlwdGlvbj5EZXNjcmlwdGlvbjwvZGVzY3JpcHRpb24+CiAgICAvLy8gPC9saXN0aGVhZGVyPgogICAgLy8vIDxpdGVtPgogICAgLy8vIDx0ZXJtPjQwMDwvdGVybT4KICAgIC8vLyA8ZGVzY3JpcHRpb24+SW52YWxpZCBJRCBzdXBwbGllZDwvZGVzY3JpcHRpb24+CiAgICAvLy8gPC9pdGVtPgogICAgLy8vIDxpdGVtPgogICAgLy8vIDx0ZXJtPjQwNDwvdGVybT4KICAgIC8vLyA8ZGVzY3JpcHRpb24+T3JkZXIgbm90IGZvdW5kPC9kZXNjcmlwdGlvbj4KICAgIC8vLyA8L2l0ZW0+CiAgICAvLy8gPC9saXN0PgogICAgLy8vIDwvZXhjZXB0aW9uPgogICAgW0RlbGV0ZSgiL3N0b3JlL29yZGVyL3tvcmRlcklkfSIpXQogICAgVGFzayBFeGVjdXRlKGxvbmcgb3JkZXJJZCk7Cn0KCi8vLyA8c3VtbWFyeT5DcmVhdGUgdXNlcjwvc3VtbWFyeT4KW1N5c3RlbS5Db2RlRG9tLkNvbXBpbGVyLkdlbmVyYXRlZENvZGUoIlJlZml0dGVyIiwgIjEuMC4wLjAiKV0KcHVibGljIHBhcnRpYWwgaW50ZXJmYWNlIElDcmVhdGVVc2VyRW5kcG9pbnQKewogICAgLy8vIDxzdW1tYXJ5PkNyZWF0ZSB1c2VyPC9zdW1tYXJ5PgogICAgLy8vIDxyZW1hcmtzPlRoaXMgY2FuIG9ubHkgYmUgZG9uZSBieSB0aGUgbG9nZ2VkIGluIHVzZXIuPC9yZW1hcmtzPgogICAgLy8vIDxwYXJhbSBuYW1lPSJib2R5Ij5DcmVhdGVkIHVzZXIgb2JqZWN0PC9wYXJhbT4KICAgIC8vLyA8cmV0dXJucz5zdWNjZXNzZnVsIG9wZXJhdGlvbjwvcmV0dXJucz4KICAgIC8vLyA8ZXhjZXB0aW9uIGNyZWY9IkFwaUV4Y2VwdGlvbiI+VGhyb3duIHdoZW4gdGhlIHJlcXVlc3QgcmV0dXJucyBhIG5vbi1zdWNjZXNzIHN0YXR1cyBjb2RlLjwvZXhjZXB0aW9uPgogICAgW0hlYWRlcnMoIkFjY2VwdDogYXBwbGljYXRpb24vanNvbiwgYXBwbGljYXRpb24veG1sIildCiAgICBbUG9zdCgiL3VzZXIiKV0KICAgIFRhc2sgRXhlY3V0ZShbQm9keV0gVXNlciBib2R5KTsKfQoKLy8vIDxzdW1tYXJ5PkNyZWF0ZXMgbGlzdCBvZiB1c2VycyB3aXRoIGdpdmVuIGlucHV0IGFycmF5PC9zdW1tYXJ5PgpbU3lzdGVtLkNvZGVEb20uQ29tcGlsZXIuR2VuZXJhdGVkQ29kZSgiUmVmaXR0ZXIiLCAiMS4wLjAuMCIpXQpwdWJsaWMgcGFydGlhbCBpbnRlcmZhY2UgSUNyZWF0ZVVzZXJzV2l0aExpc3RJbnB1dEVuZHBvaW50CnsKICAgIC8vLyA8c3VtbWFyeT5DcmVhdGVzIGxpc3Qgb2YgdXNlcnMgd2l0aCBnaXZlbiBpbnB1dCBhcnJheTwvc3VtbWFyeT4KICAgIC8vLyA8cmVtYXJrcz5DcmVhdGVzIGxpc3Qgb2YgdXNlcnMgd2l0aCBnaXZlbiBpbnB1dCBhcnJheTwvcmVtYXJrcz4KICAgIC8vLyA8cmV0dXJucz5TdWNjZXNzZnVsIG9wZXJhdGlvbjwvcmV0dXJucz4KICAgIC8vLyA8ZXhjZXB0aW9uIGNyZWY9IkFwaUV4Y2VwdGlvbiI+VGhyb3duIHdoZW4gdGhlIHJlcXVlc3QgcmV0dXJucyBhIG5vbi1zdWNjZXNzIHN0YXR1cyBjb2RlLjwvZXhjZXB0aW9uPgogICAgW0hlYWRlcnMoIkFjY2VwdDogYXBwbGljYXRpb24veG1sLCBhcHBsaWNhdGlvbi9qc29uIildCiAgICBbUG9zdCgiL3VzZXIvY3JlYXRlV2l0aExpc3QiKV0KICAgIFRhc2s8VXNlcj4gRXhlY3V0ZShbQm9keV0gSUVudW1lcmFibGU8VXNlcj4gYm9keSk7Cn0KCi8vLyA8c3VtbWFyeT5Mb2dzIHVzZXIgaW50byB0aGUgc3lzdGVtPC9zdW1tYXJ5PgpbU3lzdGVtLkNvZGVEb20uQ29tcGlsZXIuR2VuZXJhdGVkQ29kZSgiUmVmaXR0ZXIiLCAiMS4wLjAuMCIpXQpwdWJsaWMgcGFydGlhbCBpbnRlcmZhY2UgSUxvZ2luVXNlckVuZHBvaW50CnsKICAgIC8vLyA8c3VtbWFyeT5Mb2dzIHVzZXIgaW50byB0aGUgc3lzdGVtPC9zdW1tYXJ5PgogICAgLy8vIDxwYXJhbSBuYW1lPSJ1c2VybmFtZSI+VGhlIHVzZXIgbmFtZSBmb3IgbG9naW48L3BhcmFtPgogICAgLy8vIDxwYXJhbSBuYW1lPSJwYXNzd29yZCI+VGhlIHBhc3N3b3JkIGZvciBsb2dpbiBpbiBjbGVhciB0ZXh0PC9wYXJhbT4KICAgIC8vLyA8cmV0dXJucz5zdWNjZXNzZnVsIG9wZXJhdGlvbjwvcmV0dXJucz4KICAgIC8vLyA8ZXhjZXB0aW9uIGNyZWY9IkFwaUV4Y2VwdGlvbiI+CiAgICAvLy8gVGhyb3duIHdoZW4gdGhlIHJlcXVlc3QgcmV0dXJucyBhIG5vbi1zdWNjZXNzIHN0YXR1cyBjb2RlOgogICAgLy8vIDxsaXN0IHR5cGU9InRhYmxlIj4KICAgIC8vLyA8bGlzdGhlYWRlcj4KICAgIC8vLyA8dGVybT5TdGF0dXM8L3Rlcm0+CiAgICAvLy8gPGRlc2NyaXB0aW9uPkRlc2NyaXB0aW9uPC9kZXNjcmlwdGlvbj4KICAgIC8vLyA8L2xpc3RoZWFkZXI+CiAgICAvLy8gPGl0ZW0+CiAgICAvLy8gPHRlcm0+NDAwPC90ZXJtPgogICAgLy8vIDxkZXNjcmlwdGlvbj5JbnZhbGlkIHVzZXJuYW1lL3Bhc3N3b3JkIHN1cHBsaWVkPC9kZXNjcmlwdGlvbj4KICAgIC8vLyA8L2l0ZW0+CiAgICAvLy8gPC9saXN0PgogICAgLy8vIDwvZXhjZXB0aW9uPgogICAgW0hlYWRlcnMoIkFjY2VwdDogYXBwbGljYXRpb24vanNvbiIpXQogICAgW0dldCgiL3VzZXIvbG9naW4iKV0KICAgIFRhc2s8c3RyaW5nPiBFeGVjdXRlKFtRdWVyeV0gc3RyaW5nIHVzZXJuYW1lLCBbUXVlcnldIHN0cmluZyBwYXNzd29yZCk7Cn0KCi8vLyA8c3VtbWFyeT5Mb2dzIG91dCBjdXJyZW50IGxvZ2dlZCBpbiB1c2VyIHNlc3Npb248L3N1bW1hcnk+CltTeXN0ZW0uQ29kZURvbS5Db21waWxlci5HZW5lcmF0ZWRDb2RlKCJSZWZpdHRlciIsICIxLjAuMC4wIildCnB1YmxpYyBwYXJ0aWFsIGludGVyZmFjZSBJTG9nb3V0VXNlckVuZHBvaW50CnsKICAgIC8vLyA8c3VtbWFyeT5Mb2dzIG91dCBjdXJyZW50IGxvZ2dlZCBpbiB1c2VyIHNlc3Npb248L3N1bW1hcnk+CiAgICAvLy8gPHJldHVybnM+QSA8c2VlIGNyZWY9IlRhc2siLz4gdGhhdCBjb21wbGV0ZXMgd2hlbiB0aGUgcmVxdWVzdCBpcyBmaW5pc2hlZC48L3JldHVybnM+CiAgICAvLy8gPGV4Y2VwdGlvbiBjcmVmPSJBcGlFeGNlcHRpb24iPlRocm93biB3aGVuIHRoZSByZXF1ZXN0IHJldHVybnMgYSBub24tc3VjY2VzcyBzdGF0dXMgY29kZS48L2V4Y2VwdGlvbj4KICAgIFtHZXQoIi91c2VyL2xvZ291dCIpXQogICAgVGFzayBFeGVjdXRlKCk7Cn0KCi8vLyA8c3VtbWFyeT5HZXQgdXNlciBieSB1c2VyIG5hbWU8L3N1bW1hcnk+CltTeXN0ZW0uQ29kZURvbS5Db21waWxlci5HZW5lcmF0ZWRDb2RlKCJSZWZpdHRlciIsICIxLjAuMC4wIildCnB1YmxpYyBwYXJ0aWFsIGludGVyZmFjZSBJR2V0VXNlckJ5TmFtZUVuZHBvaW50CnsKICAgIC8vLyA8c3VtbWFyeT5HZXQgdXNlciBieSB1c2VyIG5hbWU8L3N1bW1hcnk+CiAgICAvLy8gPHBhcmFtIG5hbWU9InVzZXJuYW1lIj5UaGUgbmFtZSB0aGF0IG5lZWRzIHRvIGJlIGZldGNoZWQuIFVzZSB1c2VyMSBmb3IgdGVzdGluZy48L3BhcmFtPgogICAgLy8vIDxyZXR1cm5zPnN1Y2Nlc3NmdWwgb3BlcmF0aW9uPC9yZXR1cm5zPgogICAgLy8vIDxleGNlcHRpb24gY3JlZj0iQXBpRXhjZXB0aW9uIj4KICAgIC8vLyBUaHJvd24gd2hlbiB0aGUgcmVxdWVzdCByZXR1cm5zIGEgbm9uLXN1Y2Nlc3Mgc3RhdHVzIGNvZGU6CiAgICAvLy8gPGxpc3QgdHlwZT0idGFibGUiPgogICAgLy8vIDxsaXN0aGVhZGVyPgogICAgLy8vIDx0ZXJtPlN0YXR1czwvdGVybT4KICAgIC8vLyA8ZGVzY3JpcHRpb24+RGVzY3JpcHRpb248L2Rlc2NyaXB0aW9uPgogICAgLy8vIDwvbGlzdGhlYWRlcj4KICAgIC8vLyA8aXRlbT4KICAgIC8vLyA8dGVybT40MDA8L3Rlcm0+CiAgICAvLy8gPGRlc2NyaXB0aW9uPkludmFsaWQgdXNlcm5hbWUgc3VwcGxpZWQ8L2Rlc2NyaXB0aW9uPgogICAgLy8vIDwvaXRlbT4KICAgIC8vLyA8aXRlbT4KICAgIC8vLyA8dGVybT40MDQ8L3Rlcm0+CiAgICAvLy8gPGRlc2NyaXB0aW9uPlVzZXIgbm90IGZvdW5kPC9kZXNjcmlwdGlvbj4KICAgIC8vLyA8L2l0ZW0+CiAgICAvLy8gPC9saXN0PgogICAgLy8vIDwvZXhjZXB0aW9uPgogICAgW0hlYWRlcnMoIkFjY2VwdDogYXBwbGljYXRpb24vanNvbiIpXQogICAgW0dldCgiL3VzZXIve3VzZXJuYW1lfSIpXQogICAgVGFzazxVc2VyPiBFeGVjdXRlKHN0cmluZyB1c2VybmFtZSk7Cn0KCi8vLyA8c3VtbWFyeT5VcGRhdGUgdXNlcjwvc3VtbWFyeT4KW1N5c3RlbS5Db2RlRG9tLkNvbXBpbGVyLkdlbmVyYXRlZENvZGUoIlJlZml0dGVyIiwgIjEuMC4wLjAiKV0KcHVibGljIHBhcnRpYWwgaW50ZXJmYWNlIElVcGRhdGVVc2VyRW5kcG9pbnQKewogICAgLy8vIDxzdW1tYXJ5PlVwZGF0ZSB1c2VyPC9zdW1tYXJ5PgogICAgLy8vIDxyZW1hcmtzPlRoaXMgY2FuIG9ubHkgYmUgZG9uZSBieSB0aGUgbG9nZ2VkIGluIHVzZXIuPC9yZW1hcmtzPgogICAgLy8vIDxwYXJhbSBuYW1lPSJ1c2VybmFtZSI+bmFtZSB0aGF0IG5lZWQgdG8gYmUgZGVsZXRlZDwvcGFyYW0+CiAgICAvLy8gPHBhcmFtIG5hbWU9ImJvZHkiPlVwZGF0ZSBhbiBleGlzdGVudCB1c2VyIGluIHRoZSBzdG9yZTwvcGFyYW0+CiAgICAvLy8gPHJldHVybnM+QSA8c2VlIGNyZWY9IlRhc2siLz4gdGhhdCBjb21wbGV0ZXMgd2hlbiB0aGUgcmVxdWVzdCBpcyBmaW5pc2hlZC48L3JldHVybnM+CiAgICAvLy8gPGV4Y2VwdGlvbiBjcmVmPSJBcGlFeGNlcHRpb24iPlRocm93biB3aGVuIHRoZSByZXF1ZXN0IHJldHVybnMgYSBub24tc3VjY2VzcyBzdGF0dXMgY29kZS48L2V4Y2VwdGlvbj4KICAgIFtQdXQoIi91c2VyL3t1c2VybmFtZX0iKV0KICAgIFRhc2sgRXhlY3V0ZShzdHJpbmcgdXNlcm5hbWUsIFtCb2R5XSBVc2VyIGJvZHkpOwp9CgovLy8gPHN1bW1hcnk+RGVsZXRlIHVzZXI8L3N1bW1hcnk+CltTeXN0ZW0uQ29kZURvbS5Db21waWxlci5HZW5lcmF0ZWRDb2RlKCJSZWZpdHRlciIsICIxLjAuMC4wIildCnB1YmxpYyBwYXJ0aWFsIGludGVyZmFjZSBJRGVsZXRlVXNlckVuZHBvaW50CnsKICAgIC8vLyA8c3VtbWFyeT5EZWxldGUgdXNlcjwvc3VtbWFyeT4KICAgIC8vLyA8cmVtYXJrcz5UaGlzIGNhbiBvbmx5IGJlIGRvbmUgYnkgdGhlIGxvZ2dlZCBpbiB1c2VyLjwvcmVtYXJrcz4KICAgIC8vLyA8cGFyYW0gbmFtZT0idXNlcm5hbWUiPlRoZSBuYW1lIHRoYXQgbmVlZHMgdG8gYmUgZGVsZXRlZDwvcGFyYW0+CiAgICAvLy8gPHJldHVybnM+QSA8c2VlIGNyZWY9IlRhc2siLz4gdGhhdCBjb21wbGV0ZXMgd2hlbiB0aGUgcmVxdWVzdCBpcyBmaW5pc2hlZC48L3JldHVybnM+CiAgICAvLy8gPGV4Y2VwdGlvbiBjcmVmPSJBcGlFeGNlcHRpb24iPgogICAgLy8vIFRocm93biB3aGVuIHRoZSByZXF1ZXN0IHJldHVybnMgYSBub24tc3VjY2VzcyBzdGF0dXMgY29kZToKICAgIC8vLyA8bGlzdCB0eXBlPSJ0YWJsZSI+CiAgICAvLy8gPGxpc3RoZWFkZXI+CiAgICAvLy8gPHRlcm0+U3RhdHVzPC90ZXJtPgogICAgLy8vIDxkZXNjcmlwdGlvbj5EZXNjcmlwdGlvbjwvZGVzY3JpcHRpb24+CiAgICAvLy8gPC9saXN0aGVhZGVyPgogICAgLy8vIDxpdGVtPgogICAgLy8vIDx0ZXJtPjQwMDwvdGVybT4KICAgIC8vLyA8ZGVzY3JpcHRpb24+SW52YWxpZCB1c2VybmFtZSBzdXBwbGllZDwvZGVzY3JpcHRpb24+CiAgICAvLy8gPC9pdGVtPgogICAgLy8vIDxpdGVtPgogICAgLy8vIDx0ZXJtPjQwNDwvdGVybT4KICAgIC8vLyA8ZGVzY3JpcHRpb24+VXNlciBub3QgZm91bmQ8L2Rlc2NyaXB0aW9uPgogICAgLy8vIDwvaXRlbT4KICAgIC8vLyA8L2xpc3Q+CiAgICAvLy8gPC9leGNlcHRpb24+CiAgICBbRGVsZXRlKCIvdXNlci97dXNlcm5hbWV9IildCiAgICBUYXNrIEV4ZWN1dGUoc3RyaW5nIHVzZXJuYW1lKTsKfQpgYGAKCiMjIFJlc3RTZXJ2aWNlCgpIZXJlJ3MgYW4gZXhhbXBsZSB1c2FnZSBvZiB0aGUgZ2VuZXJhdGVkIGNvZGUgYWJvdmUKCmBgYGNzCnVzaW5nIFJlZml0Owp1c2luZyBTeXN0ZW07CnVzaW5nIFN5c3RlbS5UaHJlYWRpbmcuVGFza3M7CgpuYW1lc3BhY2UgWW91ci5OYW1lc3BhY2UuT2YuQ2hvaWNlLkdlbmVyYXRlZENvZGU7CgppbnRlcm5hbCBjbGFzcyBQcm9ncmFtCnsKICAgIHByaXZhdGUgc3RhdGljIGFzeW5jIFRhc2sgTWFpbihzdHJpbmdbXSBhcmdzKQogICAgewogICAgICAgIHZhciBjbGllbnQgPSBSZXN0U2VydmljZS5Gb3I8SVN3YWdnZXJQZXRzdG9yZT4oImh0dHBzOi8vcGV0c3RvcmUzLnN3YWdnZXIuaW8vYXBpL3YzIik7CiAgICAgICAgdmFyIHBldCA9IGF3YWl0IGNsaWVudC5HZXRQZXRCeUlkKDEpOwoKICAgICAgICBDb25zb2xlLldyaXRlTGluZSgiIyMgVXNpbmcgVGFzazxUPiBhcyByZXR1cm4gdHlwZSAjIyIpOwogICAgICAgIENvbnNvbGUuV3JpdGVMaW5lKCQiTmFtZToge3BldC5OYW1lfSIpOwogICAgICAgIENvbnNvbGUuV3JpdGVMaW5lKCQiQ2F0ZWdvcnk6IHtwZXQuQ2F0ZWdvcnkuTmFtZX0iKTsKICAgICAgICBDb25zb2xlLldyaXRlTGluZSgkIlN0YXR1czoge3BldC5TdGF0dXN9Iik7CiAgICAgICAgQ29uc29sZS5Xcml0ZUxpbmUoKTsKCiAgICAgICAgdmFyIGNsaWVudDIgPSBSZXN0U2VydmljZS5Gb3I8V2l0aEFwaVJlc3BvbnNlLklTd2FnZ2VyUGV0c3RvcmU+KCJodHRwczovL3BldHN0b3JlMy5zd2FnZ2VyLmlvL2FwaS92MyIpOwogICAgICAgIHZhciByZXNwb25zZSA9IGF3YWl0IGNsaWVudDIuR2V0UGV0QnlJZCgyKTsKCiAgICAgICAgQ29uc29sZS5Xcml0ZUxpbmUoIiMjIFVzaW5nIFRhc2s8SUFwaVJlc3BvbnNlPFQ+PiBhcyByZXR1cm4gdHlwZSAjIyIpOwogICAgICAgIENvbnNvbGUuV3JpdGVMaW5lKCQiSFRUUCBTdGF0dXMgQ29kZToge3Jlc3BvbnNlLlN0YXR1c0NvZGV9Iik7CiAgICAgICAgQ29uc29sZS5Xcml0ZUxpbmUoJCJOYW1lOiB7cmVzcG9uc2UuQ29udGVudC5OYW1lfSIpOwogICAgICAgIENvbnNvbGUuV3JpdGVMaW5lKCQiQ2F0ZWdvcnk6IHtyZXNwb25zZS5Db250ZW50LkNhdGVnb3J5Lk5hbWV9Iik7CiAgICAgICAgQ29uc29sZS5Xcml0ZUxpbmUoJCJTdGF0dXM6IHtyZXNwb25zZS5Db250ZW50LlN0YXR1c30iKTsKICAgIH0KfQpgYGAKClRoZSBgUmVzdFNlcnZpY2VgIGNsYXNzIGdlbmVyYXRlcyBhbiBpbXBsZW1lbnRhdGlvbiBvZiBgSVN3YWdnZXJQZXRzdG9yZWAgdGhhdCB1c2VzIGBIdHRwQ2xpZW50YCB0byBtYWtlIGl0cyBjYWxscy4gCgpUaGUgY29kZSBhYm92ZSB3aGVuIHJ1biB3aWxsIG91dHB1dCBzb21ldGhpbmcgbGlrZSB0aGlzOgoKYGBgCiMjIFVzaW5nIFRhc2s8VD4gYXMgcmV0dXJuIHR5cGUgIyMKTmFtZTogR2F0aXRvdG90b3RvCkNhdGVnb3J5OiBDaGF1Y2l0bwpTdGF0dXM6IFNvbGQKCiMjIFVzaW5nIFRhc2s8SUFwaVJlc3BvbnNlPFQ+PiBhcyByZXR1cm4gdHlwZSAjIwpIVFRQIFN0YXR1cyBDb2RlOiBPSwpOYW1lOiBHYXRpdG90b3RvdG8KQ2F0ZWdvcnk6IENoYXVjaXRvClN0YXR1czogU29sZApgYGAKCiMjIEFTUC5ORVQgQ29yZSBhbmQgSHR0cENsaWVudEZhY3RvcnkKCkhlcmUncyBhbiBleGFtcGxlIE1pbmltYWwgQVBJIHdpdGggdGhlIFtgUmVmaXQuSHR0cENsaWVudEZhY3RvcnlgXShodHRwczovL3d3dy5udWdldC5vcmcvcGFja2FnZXMvUmVmaXQuSHR0cENsaWVudEZhY3RvcnkpIGxpYnJhcnk6CgpgYGBjcwp1c2luZyBSZWZpdDsKdXNpbmcgWW91ci5OYW1lc3BhY2UuT2YuQ2hvaWNlLkdlbmVyYXRlZENvZGU7Cgp2YXIgYnVpbGRlciA9IFdlYkFwcGxpY2F0aW9uLkNyZWF0ZUJ1aWxkZXIoYXJncyk7CmJ1aWxkZXIuU2VydmljZXMuQWRkRW5kcG9pbnRzQXBpRXhwbG9yZXIoKTsKYnVpbGRlci5TZXJ2aWNlcy5BZGRTd2FnZ2VyR2VuKCk7CmJ1aWxkZXIuU2VydmljZXMKICAgIC5BZGRSZWZpdENsaWVudDxJU3dhZ2dlclBldHN0b3JlPigpCiAgICAuQ29uZmlndXJlSHR0cENsaWVudChjID0+IGMuQmFzZUFkZHJlc3MgPSBuZXcgVXJpKCJodHRwczovL3BldHN0b3JlMy5zd2FnZ2VyLmlvL2FwaS92MyIpKTsKCnZhciBhcHAgPSBidWlsZGVyLkJ1aWxkKCk7CmFwcC5NYXBHZXQoCiAgICAgICAgIi9wZXQve2lkOmxvbmd9IiwKICAgICAgICBhc3luYyAoSVN3YWdnZXJQZXRzdG9yZSBwZXRzdG9yZSwgbG9uZyBpZCkgPT4KICAgICAgICB7CiAgICAgICAgICAgIHRyeQogICAgICAgICAgICB7CiAgICAgICAgICAgICAgICByZXR1cm4gUmVzdWx0cy5Payhhd2FpdCBwZXRzdG9yZS5HZXRQZXRCeUlkKGlkKSk7CiAgICAgICAgICAgIH0KICAgICAgICAgICAgY2F0Y2ggKFJlZml0LkFwaUV4Y2VwdGlvbiBlKQogICAgICAgICAgICB7CiAgICAgICAgICAgICAgICByZXR1cm4gUmVzdWx0cy5TdGF0dXNDb2RlKChpbnQpZS5TdGF0dXNDb2RlKTsKICAgICAgICAgICAgfQogICAgICAgIH0pCiAgICAuV2l0aE5hbWUoIkdldFBldEJ5SWQiKQogICAgLldpdGhPcGVuQXBpKCk7CgphcHAuVXNlSHR0cHNSZWRpcmVjdGlvbigpOwphcHAuVXNlU3dhZ2dlclVJKCk7CmFwcC5Vc2VTd2FnZ2VyKCk7CmFwcC5SdW4oKTsKYGBgCgoKLk5FVCBDb3JlIHN1cHBvcnRzIHJlZ2lzdGVyaW5nIHRoZSBnZW5lcmF0ZWQgYElTd2FnZ2VyUGV0c3RvcmVgIGludGVyZmFjZSB2aWEgYEh0dHBDbGllbnRGYWN0b3J5YAoKVGhlIGZvbGxvd2luZyByZXF1ZXN0IHRvIHRoZSBBUEkgYWJvdmUKYGBgc2hlbGwKJCBjdXJsIC1YICdHRVQnICdodHRwczovL2xvY2FsaG9zdDo1MDAxL3BldC8xJyAtSCAnYWNjZXB0OiBhcHBsaWNhdGlvbi9qc29uJwpgYGAKClJldHVybnMgYSByZXNwb25zZSB0aGF0IGxvb2tzIHNvbWV0aGluZyBsaWtlIHRoaXM6CmBgYGpzb24KewogICJpZCI6IDEsCiAgIm5hbWUiOiAiU3BlY2lhbF9jaGFyX293bmVyXyFAIyReJigpYC50ZXN0aW5nIiwKICAicGhvdG9VcmxzIjogWwogICAgImh0dHBzOi8vcGV0c3RvcmUzLnN3YWdnZXIuaW8vcmVzb3VyY2VzL3Bob3Rvcy82MjMzODkwOTUuanBnIgogIF0sCiAgInRhZ3MiOiBbXSwKICAic3RhdHVzIjogIlNvbGQiCn0KYGBgCgojIyBEZXBlbmRlbmN5IEluamVjdGlvbgoKUmVmaXR0ZXIgc3VwcG9ydHMgZ2VuZXJhdGluZyBib290c3RyYXBwaW5nIGNvZGUgdGhhdCBhbGxvd3MgdGhlIHVzZXIgdG8gY29udmVuaWVudGx5IGNvbmZpZ3VyZSBhbGwgZ2VuZXJhdGVkIFJlZml0IGludGVyZmFjZXMgYnkgY2FsbGluZyBhIHNpbmdsZSBleHRlbnNpb24gbWV0aG9kIHRvIGBJU2VydmljZUNvbGxlY3Rpb25gLgoKVGhpcyBpcyBlbmFibGVkIHRocm91Z2ggdGhlIGAucmVmaXR0ZXJgIHNldHRpbmdzIGZpbGUgbGlrZSB0aGlzOgoKYGBganNvbgp7CiAgIm9wZW5BcGlQYXRoIjogIi4uL09wZW5BUEkvdjMuMC9wZXRzdG9yZS5qc29uIiwKICAibmFtZXNwYWNlIjogIlBldHN0b3JlIiwKICAiZGVwZW5kZW5jeUluamVjdGlvblNldHRpbmdzIjogewogICAgImJhc2VVcmwiOiAiaHR0cHM6Ly9wZXRzdG9yZTMuc3dhZ2dlci5pby9hcGkvdjMiLAogICAgImh0dHBNZXNzYWdlSGFuZGxlcnMiOiBbICJUZWxlbWV0cnlEZWxlZ2F0aW5nSGFuZGxlciIgXSwKICAgICJ0cmFuc2llbnRFcnJvckhhbmRsZXIiOiAiUG9sbHkiLAogICAgIm1heFJldHJ5Q291bnQiOiAzLAogICAgImZpcnN0QmFja29mZlJldHJ5SW5TZWNvbmRzIjogMC41CiAgfQp9CmBgYAoKd2hpY2ggd2lsbCBnZW5lcmF0ZSBhbiBleHRlbnNpb24gbWV0aG9kIHRvIGBJU2VydmljZUNvbGxlY3Rpb25gIGNhbGxlZCBgQ29uZmlndXJlUmVmaXRDbGllbnRzKClgLiBUaGUgZ2VuZXJhdGVkIGV4dGVuc2lvbiBtZXRob2QgZGVwZW5kcyBvbiBbYFJlZml0Lkh0dHBDbGllbnRGYWN0b3J5YF0oaHR0cHM6Ly93d3cubnVnZXQub3JnL3BhY2thZ2VzL1JlZml0Lkh0dHBDbGllbnRGYWN0b3J5KSBsaWJyYXJ5IGFuZCBsb29rcyBsaWtlIHRoaXM6CgpgYGBjcwpwdWJsaWMgc3RhdGljIElTZXJ2aWNlQ29sbGVjdGlvbiBDb25maWd1cmVSZWZpdENsaWVudHMoCiAgICB0aGlzIElTZXJ2aWNlQ29sbGVjdGlvbiBzZXJ2aWNlcywgCiAgICBBY3Rpb248SUh0dHBDbGllbnRCdWlsZGVyPj8gYnVpbGRlciA9IGRlZmF1bHQsIAogICAgUmVmaXRTZXR0aW5ncz8gc2V0dGluZ3MgPSBkZWZhdWx0KQp7CiAgICB2YXIgY2xpZW50QnVpbGRlcklTd2FnZ2VyUGV0c3RvcmUgPSBzZXJ2aWNlcwogICAgICAgIC5BZGRSZWZpdENsaWVudDxJU3dhZ2dlclBldHN0b3JlPihzZXR0aW5ncykKICAgICAgICAuQ29uZmlndXJlSHR0cENsaWVudChjID0+IGMuQmFzZUFkZHJlc3MgPSBuZXcgVXJpKCJodHRwczovL3BldHN0b3JlMy5zd2FnZ2VyLmlvL2FwaS92MyIpKQogICAgICAgIC5BZGRIdHRwTWVzc2FnZUhhbmRsZXI8VGVsZW1ldHJ5RGVsZWdhdGluZ0hhbmRsZXI+KCk7CgogICAgY2xpZW50QnVpbGRlcklTd2FnZ2VyUGV0c3RvcmUKICAgICAgICAuQWRkUG9saWN5SGFuZGxlcigKICAgICAgICAgICAgSHR0cFBvbGljeUV4dGVuc2lvbnMKICAgICAgICAgICAgICAgIC5IYW5kbGVUcmFuc2llbnRIdHRwRXJyb3IoKQogICAgICAgICAgICAgICAgLldhaXRBbmRSZXRyeUFzeW5jKAogICAgICAgICAgICAgICAgICAgIEJhY2tvZmYuRGVjb3JyZWxhdGVkSml0dGVyQmFja29mZlYyKAogICAgICAgICAgICAgICAgICAgICAgICBUaW1lU3Bhbi5Gcm9tU2Vjb25kcygwLjUpLAogICAgICAgICAgICAgICAgICAgICAgICAzKSkpOwoKICAgIGJ1aWxkZXI/Lkludm9rZShjbGllbnRCdWlsZGVySVN3YWdnZXJQZXRzdG9yZSk7CgogICAgcmV0dXJuIHNlcnZpY2VzOwp9CmBgYAoKVGhpcyBjb21lcyBpbiBoYW5keSBlc3BlY2lhbGx5IHdoZW4gZ2VuZXJhdGluZyBtdWx0aXBsZSBpbnRlcmZhY2VzLCBieSB0YWcgb3IgZW5kcG9pbnQuIEZvciBleGFtcGxlLCB0aGUgZm9sbG93aW5nIGAucmVmaXR0ZXJgIHNldHRpbmdzIGZpbGUKCmBgYGpzb24KewogICJvcGVuQXBpUGF0aCI6ICIuLi9PcGVuQVBJL3YzLjAvcGV0c3RvcmUuanNvbiIsCiAgIm5hbWVzcGFjZSI6ICJQZXRzdG9yZSIsCiAgIm11bHRpcGxlSW50ZXJmYWNlcyI6ICJCeVRhZyIsCiAgImRlcGVuZGVuY3lJbmplY3Rpb25TZXR0aW5ncyI6IHsKICAgICJiYXNlVXJsIjogImh0dHBzOi8vcGV0c3RvcmUzLnN3YWdnZXIuaW8vYXBpL3YzIiwKICAgICJodHRwTWVzc2FnZUhhbmRsZXJzIjogWyAiVGVsZW1ldHJ5RGVsZWdhdGluZ0hhbmRsZXIiIF0sCiAgICAidHJhbnNpZW50RXJyb3JIYW5kbGVyIjogIlBvbGx5IiwKICAgICJtYXhSZXRyeUNvdW50IjogMywKICAgICJmaXJzdEJhY2tvZmZSZXRyeUluU2Vjb25kcyI6IDAuNQogIH0KfQpgYGAKCldpbGwgZ2VuZXJhdGUgYSBzaW5nbGUgYENvbmZpZ3VyZVJlZml0Q2xpZW50cygpYCBleHRlbnNpb24gbWV0aG9kcyB0aGF0IG1heSBjb250YWluIGRlcGVuZGVuY3kgaW5qZWN0aW9uIGNvbmZpZ3VyYXRpb24gY29kZSBmb3IgbXVsdGlwbGUgaW50ZXJmYWNlcyBsaWtlIHRoaXMKCmBgYGNzaGFycApwdWJsaWMgc3RhdGljIElTZXJ2aWNlQ29sbGVjdGlvbiBDb25maWd1cmVSZWZpdENsaWVudHMoCiAgICB0aGlzIElTZXJ2aWNlQ29sbGVjdGlvbiBzZXJ2aWNlcywgCiAgICBBY3Rpb248SUh0dHBDbGllbnRCdWlsZGVyPj8gYnVpbGRlciA9IGRlZmF1bHQsIAogICAgUmVmaXRTZXR0aW5ncz8gc2V0dGluZ3MgPSBkZWZhdWx0KQp7CiAgICB2YXIgY2xpZW50QnVpbGRlcklQZXRBcGkgPSBzZXJ2aWNlcwogICAgICAgIC5BZGRSZWZpdENsaWVudDxJUGV0QXBpPihzZXR0aW5ncykKICAgICAgICAuQ29uZmlndXJlSHR0cENsaWVudChjID0+IGMuQmFzZUFkZHJlc3MgPSBuZXcgVXJpKCJodHRwczovL3BldHN0b3JlMy5zd2FnZ2VyLmlvL2FwaS92MyIpKQogICAgICAgIC5BZGRIdHRwTWVzc2FnZUhhbmRsZXI8VGVsZW1ldHJ5RGVsZWdhdGluZ0hhbmRsZXI+KCk7CgogICAgY2xpZW50QnVpbGRlcklQZXRBcGkKICAgICAgICAuQWRkUG9saWN5SGFuZGxlcigKICAgICAgICAgICAgSHR0cFBvbGljeUV4dGVuc2lvbnMKICAgICAgICAgICAgICAgIC5IYW5kbGVUcmFuc2llbnRIdHRwRXJyb3IoKQogICAgICAgICAgICAgICAgLldhaXRBbmRSZXRyeUFzeW5jKAogICAgICAgICAgICAgICAgICAgIEJhY2tvZmYuRGVjb3JyZWxhdGVkSml0dGVyQmFja29mZlYyKAogICAgICAgICAgICAgICAgICAgICAgICBUaW1lU3Bhbi5Gcm9tU2Vjb25kcygwLjUpLAogICAgICAgICAgICAgICAgICAgICAgICAzKSkpOwoKICAgIGJ1aWxkZXI/Lkludm9rZShjbGllbnRCdWlsZGVySVBldEFwaSk7CgogICAgdmFyIGNsaWVudEJ1aWxkZXJJU3RvcmVBcGkgPSBzZXJ2aWNlcwogICAgICAgIC5BZGRSZWZpdENsaWVudDxJU3RvcmVBcGk+KHNldHRpbmdzKQogICAgICAgIC5Db25maWd1cmVIdHRwQ2xpZW50KGMgPT4gYy5CYXNlQWRkcmVzcyA9IG5ldyBVcmkoImh0dHBzOi8vcGV0c3RvcmUzLnN3YWdnZXIuaW8vYXBpL3YzIikpCiAgICAgICAgLkFkZEh0dHBNZXNzYWdlSGFuZGxlcjxUZWxlbWV0cnlEZWxlZ2F0aW5nSGFuZGxlcj4oKTsKCiAgICBjbGllbnRCdWlsZGVySVN0b3JlQXBpCiAgICAgICAgLkFkZFBvbGljeUhhbmRsZXIoCiAgICAgICAgICAgIEh0dHBQb2xpY3lFeHRlbnNpb25zCiAgICAgICAgICAgICAgICAuSGFuZGxlVHJhbnNpZW50SHR0cEVycm9yKCkKICAgICAgICAgICAgICAgIC5XYWl0QW5kUmV0cnlBc3luYygKICAgICAgICAgICAgICAgICAgICBCYWNrb2ZmLkRlY29ycmVsYXRlZEppdHRlckJhY2tvZmZWMigKICAgICAgICAgICAgICAgICAgICAgICAgVGltZVNwYW4uRnJvbVNlY29uZHMoMC41KSwKICAgICAgICAgICAgICAgICAgICAgICAgMykpKTsKCiAgICBidWlsZGVyPy5JbnZva2UoY2xpZW50QnVpbGRlcklTdG9yZUFwaSk7CgogICAgdmFyIGNsaWVudEJ1aWxkZXJJVXNlckFwaSA9IHNlcnZpY2VzCiAgICAgICAgLkFkZFJlZml0Q2xpZW50PElVc2VyQXBpPihzZXR0aW5ncykKICAgICAgICAuQ29uZmlndXJlSHR0cENsaWVudChjID0+IGMuQmFzZUFkZHJlc3MgPSBuZXcgVXJpKCJodHRwczovL3BldHN0b3JlMy5zd2FnZ2VyLmlvL2FwaS92MyIpKQogICAgICAgIC5BZGRIdHRwTWVzc2FnZUhhbmRsZXI8VGVsZW1ldHJ5RGVsZWdhdGluZ0hhbmRsZXI+KCk7CgogICAgY2xpZW50QnVpbGRlcklVc2VyQXBpCiAgICAgICAgLkFkZFBvbGljeUhhbmRsZXIoCiAgICAgICAgICAgIEh0dHBQb2xpY3lFeHRlbnNpb25zCiAgICAgICAgICAgICAgICAuSGFuZGxlVHJhbnNpZW50SHR0cEVycm9yKCkKICAgICAgICAgICAgICAgIC5XYWl0QW5kUmV0cnlBc3luYygKICAgICAgICAgICAgICAgICAgICBCYWNrb2ZmLkRlY29ycmVsYXRlZEppdHRlckJhY2tvZmZWMigKICAgICAgICAgICAgICAgICAgICAgICAgVGltZVNwYW4uRnJvbVNlY29uZHMoMC41KSwKICAgICAgICAgICAgICAgICAgICAgICAgMykpKTsKCiAgICBidWlsZGVyPy5JbnZva2UoY2xpZW50QnVpbGRlcklVc2VyQXBpKTsKCiAgICByZXR1cm4gc2VydmljZXM7Cn0KYGBgCgpQZXJzb25hbGx5LCB0aGV5IEkgdXNlIFJlZml0dGVyIGlzIHRvIGdlbmVyYXRlIGFuIGludGVyZmFjZSBwZXIgZW5kcG9pbnQsIHNvIHdoZW4gZ2VuZXJhdGluZyBjb2RlIGZvciBhIGxhcmdlIGFuZCBjb21wbGV4IEFQSSwgSSBtaWdodCBoYXZlIHNldmVyYWwgaW50ZXJmYWNlcy4KCiMjIFN5c3RlbSByZXF1aXJlbWVudHMKLk5FVCA4LjAKCiMjIENvbnRyaWJ1dG9ycwoKPCEtLSBBTEwtQ09OVFJJQlVUT1JTLUxJU1Q6U1RBUlQgLSBEbyBub3QgcmVtb3ZlIG9yIG1vZGlmeSB0aGlzIHNlY3Rpb24gLS0+CjwhLS0gcHJldHRpZXItaWdub3JlLXN0YXJ0IC0tPgo8IS0tIG1hcmtkb3dubGludC1kaXNhYmxlIC0tPgo8dGFibGU+CiAgPHRib2R5PgogICAgPHRyPgogICAgICA8dGQgYWxpZ249ImNlbnRlciIgdmFsaWduPSJ0b3AiIHdpZHRoPSIxNC4yOCUiPjxhIGhyZWY9Imh0dHBzOi8vZ2l0aHViLmNvbS9uZW9HZW5ldmEiPjxpbWcgc3JjPSJodHRwczovL2F2YXRhcnMuZ2l0aHVidXNlcmNvbnRlbnQuY29tL3UvODA0NzI0P3Y9ND9zPTEwMCIgd2lkdGg9IjEwMHB4OyIgYWx0PSJQaGlsaXAgQ294Ii8+PGJyIC8+PHN1Yj48Yj5QaGlsaXAgQ294PC9iPjwvc3ViPjwvYT48YnIgLz48YSBocmVmPSJodHRwczovL2dpdGh1Yi5jb20vY2hyaXN0aWFuaGVsbGUvcmVmaXR0ZXIvY29tbWl0cz9hdXRob3I9bmVvR2VuZXZhIiB0aXRsZT0iQ29kZSI+8J+SuzwvYT48L3RkPgogICAgICA8dGQgYWxpZ249ImNlbnRlciIgdmFsaWduPSJ0b3AiIHdpZHRoPSIxNC4yOCUiPjxhIGhyZWY9Imh0dHBzOi8vY2FtLm1hY2Zhci5sYW5kLyI+PGltZyBzcmM9Imh0dHBzOi8vYXZhdGFycy5naXRodWJ1c2VyY29udGVudC5jb20vdS8xMjk4ODQ3P3Y9ND9zPTEwMCIgd2lkdGg9IjEwMHB4OyIgYWx0PSJDYW1lcm9uIE1hY0ZhcmxhbmQiLz48YnIgLz48c3ViPjxiPkNhbWVyb24gTWFjRmFybGFuZDwvYj48L3N1Yj48L2E+PGJyIC8+PGEgaHJlZj0iaHR0cHM6Ly9naXRodWIuY29tL2NocmlzdGlhbmhlbGxlL3JlZml0dGVyL2NvbW1pdHM/YXV0aG9yPWRpc3RhbnRjYW0iIHRpdGxlPSJDb2RlIj7wn5K7PC9hPjwvdGQ+CiAgICAgIDx0ZCBhbGlnbj0iY2VudGVyIiB2YWxpZ249InRvcCIgd2lkdGg9IjE0LjI4JSI+PGEgaHJlZj0iaHR0cDovL2tnYW1lLnR3Ij48aW1nIHNyYz0iaHR0cHM6Ly9hdmF0YXJzLmdpdGh1YnVzZXJjb250ZW50LmNvbS91LzM2NDY1MzI/dj00P3M9MTAwIiB3aWR0aD0iMTAwcHg7IiBhbHQ9ImtnYW1lIi8+PGJyIC8+PHN1Yj48Yj5rZ2FtZTwvYj48L3N1Yj48L2E+PGJyIC8+PGEgaHJlZj0iaHR0cHM6Ly9naXRodWIuY29tL2NocmlzdGlhbmhlbGxlL3JlZml0dGVyL2NvbW1pdHM/YXV0aG9yPWtnYW1lY2FydGVyIiB0aXRsZT0iQ29kZSI+8J+SuzwvYT48L3RkPgogICAgICA8dGQgYWxpZ249ImNlbnRlciIgdmFsaWduPSJ0b3AiIHdpZHRoPSIxNC4yOCUiPjxhIGhyZWY9Imh0dHA6Ly95cmtpLm5vIj48aW1nIHNyYz0iaHR0cHM6Ly9hdmF0YXJzLmdpdGh1YnVzZXJjb250ZW50LmNvbS91LzExNTczNjAxP3Y9ND9zPTEwMCIgd2lkdGg9IjEwMHB4OyIgYWx0PSJUaG9tYXMgUGV0dGVyc2VuIC8gWXJraSIvPjxiciAvPjxzdWI+PGI+VGhvbWFzIFBldHRlcnNlbiAvIFlya2k8L2I+PC9zdWI+PC9hPjxiciAvPjxhIGhyZWY9Imh0dHBzOi8vZ2l0aHViLmNvbS9jaHJpc3RpYW5oZWxsZS9yZWZpdHRlci9jb21taXRzP2F1dGhvcj0iIHRpdGxlPSJDb2RlIj7wn5K7PC9hPjwvdGQ+CiAgICAgIDx0ZCBhbGlnbj0iY2VudGVyIiB2YWxpZ249InRvcCIgd2lkdGg9IjE0LjI4JSI+PGEgaHJlZj0iaHR0cHM6Ly9naXRodWIuY29tLzFrdmluIj48aW1nIHNyYz0iaHR0cHM6Ly9hdmF0YXJzLmdpdGh1YnVzZXJjb250ZW50LmNvbS91LzQ2NDI1OTgwP3Y9ND9zPTEwMCIgd2lkdGg9IjEwMHB4OyIgYWx0PSJBcnRlbSIvPjxiciAvPjxzdWI+PGI+QXJ0ZW08L2I+PC9zdWI+PC9hPjxiciAvPjxhIGhyZWY9Imh0dHBzOi8vZ2l0aHViLmNvbS9jaHJpc3RpYW5oZWxsZS9yZWZpdHRlci9pc3N1ZXM/cT1hdXRob3IlM0Exa3ZpbiIgdGl0bGU9IkJ1ZyByZXBvcnRzIj7wn5CbPC9hPjwvdGQ+CiAgICAgIDx0ZCBhbGlnbj0iY2VudGVyIiB2YWxpZ249InRvcCIgd2lkdGg9IjE0LjI4JSI+PGEgaHJlZj0iaHR0cHM6Ly9naXRodWIuY29tL203Y2xhcmtlIj48aW1nIHNyYz0iaHR0cHM6Ly9hdmF0YXJzLmdpdGh1YnVzZXJjb250ZW50LmNvbS91LzQ3NDM5MTQ0P3Y9ND9zPTEwMCIgd2lkdGg9IjEwMHB4OyIgYWx0PSJtN2NsYXJrZSIvPjxiciAvPjxzdWI+PGI+bTdjbGFya2U8L2I+PC9zdWI+PC9hPjxiciAvPjxhIGhyZWY9Imh0dHBzOi8vZ2l0aHViLmNvbS9jaHJpc3RpYW5oZWxsZS9yZWZpdHRlci9pc3N1ZXM/cT1hdXRob3IlM0FtN2NsYXJrZSIgdGl0bGU9IkJ1ZyByZXBvcnRzIj7wn5CbPC9hPjwvdGQ+CiAgICAgIDx0ZCBhbGlnbj0iY2VudGVyIiB2YWxpZ249InRvcCIgd2lkdGg9IjE0LjI4JSI+PGEgaHJlZj0iaHR0cHM6Ly9naXRodWIuY29tL2tpcmlkZXMiPjxpbWcgc3JjPSJodHRwczovL2F2YXRhcnMuZ2l0aHVidXNlcmNvbnRlbnQuY29tL3UvMTM2MDIxNDM/dj00P3M9MTAwIiB3aWR0aD0iMTAwcHg7IiBhbHQ9ImtpcmlkZXMiLz48YnIgLz48c3ViPjxiPmtpcmlkZXM8L2I+PC9zdWI+PC9hPjxiciAvPjxhIGhyZWY9Imh0dHBzOi8vZ2l0aHViLmNvbS9jaHJpc3RpYW5oZWxsZS9yZWZpdHRlci9pc3N1ZXM/cT1hdXRob3IlM0FraXJpZGVzIiB0aXRsZT0iQnVnIHJlcG9ydHMiPvCfkJs8L2E+IDxhIGhyZWY9Imh0dHBzOi8vZ2l0aHViLmNvbS9jaHJpc3RpYW5oZWxsZS9yZWZpdHRlci9jb21taXRzP2F1dGhvcj1raXJpZGVzIiB0aXRsZT0iQ29kZSI+8J+SuzwvYT48L3RkPgogICAgPC90cj4KICAgIDx0cj4KICAgICAgPHRkIGFsaWduPSJjZW50ZXIiIHZhbGlnbj0idG9wIiB3aWR0aD0iMTQuMjglIj48YSBocmVmPSJodHRwczovL2dpdGh1Yi5jb20vZ3VpbGxhdW1lc2VyYWxlIj48aW1nIHNyYz0iaHR0cHM6Ly9hdmF0YXJzLmdpdGh1YnVzZXJjb250ZW50LmNvbS91LzY2NzI0MDY/dj00P3M9MTAwIiB3aWR0aD0iMTAwcHg7IiBhbHQ9Imd1aWxsYXVtZXNlcmFsZSIvPjxiciAvPjxzdWI+PGI+Z3VpbGxhdW1lc2VyYWxlPC9iPjwvc3ViPjwvYT48YnIgLz48YSBocmVmPSJodHRwczovL2dpdGh1Yi5jb20vY2hyaXN0aWFuaGVsbGUvcmVmaXR0ZXIvY29tbWl0cz9hdXRob3I9Z3VpbGxhdW1lc2VyYWxlIiB0aXRsZT0iQ29kZSI+8J+SuzwvYT4gPGEgaHJlZj0iaHR0cHM6Ly9naXRodWIuY29tL2NocmlzdGlhbmhlbGxlL3JlZml0dGVyL2lzc3Vlcz9xPWF1dGhvciUzQWd1aWxsYXVtZXNlcmFsZSIgdGl0bGU9IkJ1ZyByZXBvcnRzIj7wn5CbPC9hPjwvdGQ+CiAgICAgIDx0ZCBhbGlnbj0iY2VudGVyIiB2YWxpZ249InRvcCIgd2lkdGg9IjE0LjI4JSI+PGEgaHJlZj0iaHR0cHM6Ly9naXRodWIuY29tL1JvZmxpbmNvcHRlciI+PGltZyBzcmM9Imh0dHBzOi8vYXZhdGFycy5naXRodWJ1c2VyY29udGVudC5jb20vdS8xNjkwMjQzP3Y9ND9zPTEwMCIgd2lkdGg9IjEwMHB4OyIgYWx0PSJEZW5uaXMgQnJlbnRqZXMiLz48YnIgLz48c3ViPjxiPkRlbm5pcyBCcmVudGplczwvYj48L3N1Yj48L2E+PGJyIC8+PGEgaHJlZj0iaHR0cHM6Ly9naXRodWIuY29tL2NocmlzdGlhbmhlbGxlL3JlZml0dGVyL2NvbW1pdHM/YXV0aG9yPVJvZmxpbmNvcHRlciIgdGl0bGU9IkNvZGUiPvCfkrs8L2E+IDxhIGhyZWY9IiNpZGVhcy1Sb2ZsaW5jb3B0ZXIiIHRpdGxlPSJJZGVhcywgUGxhbm5pbmcsICYgRmVlZGJhY2siPvCfpJQ8L2E+PC90ZD4KICAgICAgPHRkIGFsaWduPSJjZW50ZXIiIHZhbGlnbj0idG9wIiB3aWR0aD0iMTQuMjglIj48YSBocmVmPSJodHRwczovL3d3dy5saW5rZWRpbi5jb20vaW4vaGlja2V5ZGFtaWFuLyI+PGltZyBzcmM9Imh0dHBzOi8vYXZhdGFycy5naXRodWJ1c2VyY29udGVudC5jb20vdS81NzQzNj92PTQ/cz0xMDAiIHdpZHRoPSIxMDBweDsiIGFsdD0iRGFtaWFuIEhpY2tleSIvPjxiciAvPjxzdWI+PGI+RGFtaWFuIEhpY2tleTwvYj48L3N1Yj48L2E+PGJyIC8+PGEgaHJlZj0iaHR0cHM6Ly9naXRodWIuY29tL2NocmlzdGlhbmhlbGxlL3JlZml0dGVyL2lzc3Vlcz9xPWF1dGhvciUzQWRhbWlhbmgiIHRpdGxlPSJCdWcgcmVwb3J0cyI+8J+QmzwvYT48L3RkPgogICAgICA8dGQgYWxpZ249ImNlbnRlciIgdmFsaWduPSJ0b3AiIHdpZHRoPSIxNC4yOCUiPjxhIGhyZWY9Imh0dHBzOi8vZ2l0aHViLmNvbS9yaWNoYXJkaHUtbG1nIj48aW1nIHNyYz0iaHR0cHM6Ly9hdmF0YXJzLmdpdGh1YnVzZXJjb250ZW50LmNvbS91LzEyNjQzMDc4Nz92PTQ/cz0xMDAiIHdpZHRoPSIxMDBweDsiIGFsdD0icmljaGFyZGh1LWxtZyIvPjxiciAvPjxzdWI+PGI+cmljaGFyZGh1LWxtZzwvYj48L3N1Yj48L2E+PGJyIC8+PGEgaHJlZj0iaHR0cHM6Ly9naXRodWIuY29tL2NocmlzdGlhbmhlbGxlL3JlZml0dGVyL2lzc3Vlcz9xPWF1dGhvciUzQXJpY2hhcmRodS1sbWciIHRpdGxlPSJCdWcgcmVwb3J0cyI+8J+QmzwvYT48L3RkPgogICAgICA8dGQgYWxpZ249ImNlbnRlciIgdmFsaWduPSJ0b3AiIHdpZHRoPSIxNC4yOCUiPjxhIGhyZWY9Imh0dHBzOi8vZ2l0aHViLmNvbS9icmVhc2UtY29saW4iPjxpbWcgc3JjPSJodHRwczovL2F2YXRhcnMuZ2l0aHVidXNlcmNvbnRlbnQuY29tL3UvNDczNTg5MzU/dj00P3M9MTAwIiB3aWR0aD0iMTAwcHg7IiBhbHQ9ImJyZWFzZS1jb2xpbiIvPjxiciAvPjxzdWI+PGI+YnJlYXNlLWNvbGluPC9iPjwvc3ViPjwvYT48YnIgLz48YSBocmVmPSJodHRwczovL2dpdGh1Yi5jb20vY2hyaXN0aWFuaGVsbGUvcmVmaXR0ZXIvaXNzdWVzP3E9YXV0aG9yJTNBYnJlYXNlLWNvbGluIiB0aXRsZT0iQnVnIHJlcG9ydHMiPvCfkJs8L2E+PC90ZD4KICAgICAgPHRkIGFsaWduPSJjZW50ZXIiIHZhbGlnbj0idG9wIiB3aWR0aD0iMTQuMjglIj48YSBocmVmPSJodHRwczovL2dpdGh1Yi5jb20vYW5nZWxvZmIiPjxpbWcgc3JjPSJodHRwczovL2F2YXRhcnMuZ2l0aHVidXNlcmNvbnRlbnQuY29tL3UvMjAzMjI1Nz92PTQ/cz0xMDAiIHdpZHRoPSIxMDBweDsiIGFsdD0iYW5nZWxvZmIiLz48YnIgLz48c3ViPjxiPmFuZ2Vsb2ZiPC9iPjwvc3ViPjwvYT48YnIgLz48YSBocmVmPSJodHRwczovL2dpdGh1Yi5jb20vY2hyaXN0aWFuaGVsbGUvcmVmaXR0ZXIvY29tbWl0cz9hdXRob3I9YW5nZWxvZmIiIHRpdGxlPSJDb2RlIj7wn5K7PC9hPjwvdGQ+CiAgICAgIDx0ZCBhbGlnbj0iY2VudGVyIiB2YWxpZ249InRvcCIgd2lkdGg9IjE0LjI4JSI+PGEgaHJlZj0iaHR0cHM6Ly9naXRodWIuY29tL05vR1JvIj48aW1nIHNyYz0iaHR0cHM6Ly9hdmF0YXJzLmdpdGh1YnVzZXJjb250ZW50LmNvbS91LzU2NjUyNzM/dj00P3M9MTAwIiB3aWR0aD0iMTAwcHg7IiBhbHQ9IkRpbSBOb2dybyIvPjxiciAvPjxzdWI+PGI+RGltIE5vZ3JvPC9iPjwvc3ViPjwvYT48YnIgLz48YSBocmVmPSJodHRwczovL2dpdGh1Yi5jb20vY2hyaXN0aWFuaGVsbGUvcmVmaXR0ZXIvY29tbWl0cz9hdXRob3I9Tm9HUm8iIHRpdGxlPSJDb2RlIj7wn5K7PC9hPjwvdGQ+CiAgICA8L3RyPgogICAgPHRyPgogICAgICA8dGQgYWxpZ249ImNlbnRlciIgdmFsaWduPSJ0b3AiIHdpZHRoPSIxNC4yOCUiPjxhIGhyZWY9Imh0dHBzOi8vZ2l0aHViLmNvbS95YWRhbmlsb3YxOSI+PGltZyBzcmM9Imh0dHBzOi8vYXZhdGFycy5naXRodWJ1c2VyY29udGVudC5jb20vdS8xNzE2MTA2NT92PTQ/cz0xMDAiIHdpZHRoPSIxMDBweDsiIGFsdD0ieWFkYW5pbG92MTkiLz48YnIgLz48c3ViPjxiPnlhZGFuaWxvdjE5PC9iPjwvc3ViPjwvYT48YnIgLz48YSBocmVmPSIjaWRlYXMteWFkYW5pbG92MTkiIHRpdGxlPSJJZGVhcywgUGxhbm5pbmcsICYgRmVlZGJhY2siPvCfpJQ8L2E+IDxhIGhyZWY9Imh0dHBzOi8vZ2l0aHViLmNvbS9jaHJpc3RpYW5oZWxsZS9yZWZpdHRlci9jb21taXRzP2F1dGhvcj15YWRhbmlsb3YxOSIgdGl0bGU9IkNvZGUiPvCfkrs8L2E+PC90ZD4KICAgICAgPHRkIGFsaWduPSJjZW50ZXIiIHZhbGlnbj0idG9wIiB3aWR0aD0iMTQuMjglIj48YSBocmVmPSJodHRwczovL2dpdGh1Yi5jb20vZGFucG93ZWxsODgiPjxpbWcgc3JjPSJodHRwczovL2F2YXRhcnMuZ2l0aHVidXNlcmNvbnRlbnQuY29tL3UvMTEwMDM5Nz92PTQ/cz0xMDAiIHdpZHRoPSIxMDBweDsiIGFsdD0iRGFuaWVsIFBvd2VsbCIvPjxiciAvPjxzdWI+PGI+RGFuaWVsIFBvd2VsbDwvYj48L3N1Yj48L2E+PGJyIC8+PGEgaHJlZj0iaHR0cHM6Ly9naXRodWIuY29tL2NocmlzdGlhbmhlbGxlL3JlZml0dGVyL2lzc3Vlcz9xPWF1dGhvciUzQWRhbnBvd2VsbDg4IiB0aXRsZT0iQnVnIHJlcG9ydHMiPvCfkJs8L2E+PC90ZD4KICAgICAgPHRkIGFsaWduPSJjZW50ZXIiIHZhbGlnbj0idG9wIiB3aWR0aD0iMTQuMjglIj48YSBocmVmPSJodHRwczovL2dpdGh1Yi5jb20vRWtrZWlyIj48aW1nIHNyYz0iaHR0cHM6Ly9hdmF0YXJzLmdpdGh1YnVzZXJjb250ZW50LmNvbS91LzM2MTk0Njg1P3Y9ND9zPTEwMCIgd2lkdGg9IjEwMHB4OyIgYWx0PSJFa2tlaXIiLz48YnIgLz48c3ViPjxiPkVra2VpcjwvYj48L3N1Yj48L2E+PGJyIC8+PGEgaHJlZj0iaHR0cHM6Ly9naXRodWIuY29tL2NocmlzdGlhbmhlbGxlL3JlZml0dGVyL2NvbW1pdHM/YXV0aG9yPUVra2VpciIgdGl0bGU9IkRvY3VtZW50YXRpb24iPvCfk5Y8L2E+IDxhIGhyZWY9Imh0dHBzOi8vZ2l0aHViLmNvbS9jaHJpc3RpYW5oZWxsZS9yZWZpdHRlci9pc3N1ZXM/cT1hdXRob3IlM0FFa2tlaXIiIHRpdGxlPSJCdWcgcmVwb3J0cyI+8J+QmzwvYT48L3RkPgogICAgICA8dGQgYWxpZ249ImNlbnRlciIgdmFsaWduPSJ0b3AiIHdpZHRoPSIxNC4yOCUiPjxhIGhyZWY9Imh0dHBzOi8vZ2l0aHViLmNvbS93YXlsb25tdHoiPjxpbWcgc3JjPSJodHRwczovL2F2YXRhcnMuZ2l0aHVidXNlcmNvbnRlbnQuY29tL3UvNDYwNDU3OT92PTQ/cz0xMDAiIHdpZHRoPSIxMDBweDsiIGFsdD0iV2F5bG9uIE1hcnRpbmV6Ii8+PGJyIC8+PHN1Yj48Yj5XYXlsb24gTWFydGluZXo8L2I+PC9zdWI+PC9hPjxiciAvPjxhIGhyZWY9Imh0dHBzOi8vZ2l0aHViLmNvbS9jaHJpc3RpYW5oZWxsZS9yZWZpdHRlci9pc3N1ZXM/cT1hdXRob3IlM0F3YXlsb25tdHoiIHRpdGxlPSJCdWcgcmVwb3J0cyI+8J+QmzwvYT48L3RkPgogICAgICA8dGQgYWxpZ249ImNlbnRlciIgdmFsaWduPSJ0b3AiIHdpZHRoPSIxNC4yOCUiPjxhIGhyZWY9Imh0dHBzOi8vZ2l0aHViLmNvbS92aW5heW1hZHVwYXRoaSI+PGltZyBzcmM9Imh0dHBzOi8vYXZhdGFycy5naXRodWJ1c2VyY29udGVudC5jb20vdS8zODEwMjkwMD92PTQ/cz0xMDAiIHdpZHRoPSIxMDBweDsiIGFsdD0idmttYWR1cGEiLz48YnIgLz48c3ViPjxiPnZrbWFkdXBhPC9iPjwvc3ViPjwvYT48YnIgLz48YSBocmVmPSJodHRwczovL2dpdGh1Yi5jb20vY2hyaXN0aWFuaGVsbGUvcmVmaXR0ZXIvaXNzdWVzP3E9YXV0aG9yJTNBdmluYXltYWR1cGF0aGkiIHRpdGxlPSJCdWcgcmVwb3J0cyI+8J+QmzwvYT48L3RkPgogICAgICA8dGQgYWxpZ249ImNlbnRlciIgdmFsaWduPSJ0b3AiIHdpZHRoPSIxNC4yOCUiPjxhIGhyZWY9Imh0dHBzOi8vZ2l0aHViLmNvbS9Ob2JsaXgiPjxpbWcgc3JjPSJodHRwczovL2F2YXRhcnMuZ2l0aHVidXNlcmNvbnRlbnQuY29tL3UvMjIwNzY4ODM/dj00P3M9MTAwIiB3aWR0aD0iMTAwcHg7IiBhbHQ9Ik5vYmxpeCIvPjxiciAvPjxzdWI+PGI+Tm9ibGl4PC9iPjwvc3ViPjwvYT48YnIgLz48YSBocmVmPSJodHRwczovL2dpdGh1Yi5jb20vY2hyaXN0aWFuaGVsbGUvcmVmaXR0ZXIvY29tbWl0cz9hdXRob3I9Tm9ibGl4IiB0aXRsZT0iQ29kZSI+8J+SuzwvYT4gPGEgaHJlZj0iI2lkZWFzLU5vYmxpeCIgdGl0bGU9IklkZWFzLCBQbGFubmluZywgJiBGZWVkYmFjayI+8J+klDwvYT48L3RkPgogICAgICA8dGQgYWxpZ249ImNlbnRlciIgdmFsaWduPSJ0b3AiIHdpZHRoPSIxNC4yOCUiPjxhIGhyZWY9Imh0dHBzOi8vd3d3LnZlZXpsYS5pbyI+PGltZyBzcmM9Imh0dHBzOi8vYXZhdGFycy5naXRodWJ1c2VyY29udGVudC5jb20vdS8yMzA0MzI/dj00P3M9MTAwIiB3aWR0aD0iMTAwcHg7IiBhbHQ9IkF0dGlsYSBIYWpkcmlrIi8+PGJyIC8+PHN1Yj48Yj5BdHRpbGEgSGFqZHJpazwvYj48L3N1Yj48L2E+PGJyIC8+PGEgaHJlZj0iI2lkZWFzLWF0dGlsYWgiIHRpdGxlPSJJZGVhcywgUGxhbm5pbmcsICYgRmVlZGJhY2siPvCfpJQ8L2E+PC90ZD4KICAgIDwvdHI+CiAgICA8dHI+CiAgICAgIDx0ZCBhbGlnbj0iY2VudGVyIiB2YWxpZ249InRvcCIgd2lkdGg9IjE0LjI4JSI+PGEgaHJlZj0iaHR0cHM6Ly9naXRodWIuY29tL2JpZWxpazAxIj48aW1nIHNyYz0iaHR0cHM6Ly9hdmF0YXJzLmdpdGh1YnVzZXJjb250ZW50LmNvbS91LzkyMDk1MD92PTQ/cz0xMDAiIHdpZHRoPSIxMDBweDsiIGFsdD0iYmllbGlrMDEiLz48YnIgLz48c3ViPjxiPmJpZWxpazAxPC9iPjwvc3ViPjwvYT48YnIgLz48YSBocmVmPSJodHRwczovL2dpdGh1Yi5jb20vY2hyaXN0aWFuaGVsbGUvcmVmaXR0ZXIvaXNzdWVzP3E9YXV0aG9yJTNBYmllbGlrMDEiIHRpdGxlPSJCdWcgcmVwb3J0cyI+8J+QmzwvYT4gPGEgaHJlZj0iI2lkZWFzLWJpZWxpazAxIiB0aXRsZT0iSWRlYXMsIFBsYW5uaW5nLCAmIEZlZWRiYWNrIj7wn6SUPC9hPjwvdGQ+CiAgICAgIDx0ZCBhbGlnbj0iY2VudGVyIiB2YWxpZ249InRvcCIgd2lkdGg9IjE0LjI4JSI+PGEgaHJlZj0iaHR0cHM6Ly9naXRodWIuY29tL25hYWVlZiI+PGltZyBzcmM9Imh0dHBzOi8vYXZhdGFycy5naXRodWJ1c2VyY29udGVudC5jb20vdS80MzMzOTA3MT92PTQ/cz0xMDAiIHdpZHRoPSIxMDBweDsiIGFsdD0ibmFhZWVmIi8+PGJyIC8+PHN1Yj48Yj5uYWFlZWY8L2I+PC9zdWI+PC9hPjxiciAvPjxhIGhyZWY9IiNpZGVhcy1uYWFlZWYiIHRpdGxlPSJJZGVhcywgUGxhbm5pbmcsICYgRmVlZGJhY2siPvCfpJQ8L2E+PC90ZD4KICAgICAgPHRkIGFsaWduPSJjZW50ZXIiIHZhbGlnbj0idG9wIiB3aWR0aD0iMTQuMjglIj48YSBocmVmPSJodHRwczovL2dpdGh1Yi5jb20vYWxyeiI+PGltZyBzcmM9Imh0dHBzOi8vYXZhdGFycy5naXRodWJ1c2VyY29udGVudC5jb20vdS8zMTA1OTc5P3Y9ND9zPTEwMCIgd2lkdGg9IjEwMHB4OyIgYWx0PSJBbGlyZXphIEhhYmliaSIvPjxiciAvPjxzdWI+PGI+QWxpcmV6YSBIYWJpYmk8L2I+PC9zdWI+PC9hPjxiciAvPjxhIGhyZWY9Imh0dHBzOi8vZ2l0aHViLmNvbS9jaHJpc3RpYW5oZWxsZS9yZWZpdHRlci9pc3N1ZXM/cT1hdXRob3IlM0FhbHJ6IiB0aXRsZT0iQnVnIHJlcG9ydHMiPvCfkJs8L2E+PC90ZD4KICAgICAgPHRkIGFsaWduPSJjZW50ZXIiIHZhbGlnbj0idG9wIiB3aWR0aD0iMTQuMjglIj48YSBocmVmPSJodHRwczovL2dpdGh1Yi5jb20vRUVQYXJrZXIiPjxpbWcgc3JjPSJodHRwczovL2F2YXRhcnMuZ2l0aHVidXNlcmNvbnRlbnQuY29tL3UvMTU4NzQwNzY/dj00P3M9MTAwIiB3aWR0aD0iMTAwcHg7IiBhbHQ9IkplZmYgUGFya2VyLCBQRSIvPjxiciAvPjxzdWI+PGI+SmVmZiBQYXJrZXIsIFBFPC9iPjwvc3ViPjwvYT48YnIgLz48YSBocmVmPSJodHRwczovL2dpdGh1Yi5jb20vY2hyaXN0aWFuaGVsbGUvcmVmaXR0ZXIvaXNzdWVzP3E9YXV0aG9yJTNBRUVQYXJrZXIiIHRpdGxlPSJCdWcgcmVwb3J0cyI+8J+QmzwvYT48L3RkPgogICAgICA8dGQgYWxpZ249ImNlbnRlciIgdmFsaWduPSJ0b3AiIHdpZHRoPSIxNC4yOCUiPjxhIGhyZWY9Imh0dHBzOi8vZ2l0aHViLmNvbS9qb2RzNCI+PGltZyBzcmM9Imh0dHBzOi8vYXZhdGFycy5naXRodWJ1c2VyY29udGVudC5jb20vdS8zODMyODIwP3Y9ND9zPTEwMCIgd2lkdGg9IjEwMHB4OyIgYWx0PSJqb2RzIi8+PGJyIC8+PHN1Yj48Yj5qb2RzPC9iPjwvc3ViPjwvYT48YnIgLz48YSBocmVmPSIjaWRlYXMtam9kczQiIHRpdGxlPSJJZGVhcywgUGxhbm5pbmcsICYgRmVlZGJhY2siPvCfpJQ8L2E+IDxhIGhyZWY9Imh0dHBzOi8vZ2l0aHViLmNvbS9jaHJpc3RpYW5oZWxsZS9yZWZpdHRlci9pc3N1ZXM/cT1hdXRob3IlM0Fqb2RzNCIgdGl0bGU9IkJ1ZyByZXBvcnRzIj7wn5CbPC9hPjwvdGQ+CiAgICAgIDx0ZCBhbGlnbj0iY2VudGVyIiB2YWxpZ249InRvcCIgd2lkdGg9IjE0LjI4JSI+PGEgaHJlZj0iaHR0cHM6Ly9naXRodWIuY29tL2VkaW1hcnF1ZXoiPjxpbWcgc3JjPSJodHRwczovL2F2YXRhcnMuZ2l0aHVidXNlcmNvbnRlbnQuY29tL3UvNDE3OTE3MTk/dj00P3M9MTAwIiB3aWR0aD0iMTAwcHg7IiBhbHQ9IkVkaW1hcnF1ZXogTWVkZWlyb3MiLz48YnIgLz48c3ViPjxiPkVkaW1hcnF1ZXogTWVkZWlyb3M8L2I+PC9zdWI+PC9hPjxiciAvPjxhIGhyZWY9Imh0dHBzOi8vZ2l0aHViLmNvbS9jaHJpc3RpYW5oZWxsZS9yZWZpdHRlci9jb21taXRzP2F1dGhvcj1lZGltYXJxdWV6IiB0aXRsZT0iQ29kZSI+8J+SuzwvYT48L3RkPgogICAgICA8dGQgYWxpZ249ImNlbnRlciIgdmFsaWduPSJ0b3AiIHdpZHRoPSIxNC4yOCUiPjxhIGhyZWY9Imh0dHBzOi8vZ2l0aHViLmNvbS9zYWZha2tlc2lrY2kiPjxpbWcgc3JjPSJodHRwczovL2F2YXRhcnMuZ2l0aHVidXNlcmNvbnRlbnQuY29tL3UvNzA2NzI1Mj92PTQ/cz0xMDAiIHdpZHRoPSIxMDBweDsiIGFsdD0ic2FmYWtrZXNpa2NpIi8+PGJyIC8+PHN1Yj48Yj5zYWZha2tlc2lrY2k8L2I+PC9zdWI+PC9hPjxiciAvPjxhIGhyZWY9Imh0dHBzOi8vZ2l0aHViLmNvbS9jaHJpc3RpYW5oZWxsZS9yZWZpdHRlci9pc3N1ZXM/cT1hdXRob3IlM0FzYWZha2tlc2lrY2kiIHRpdGxlPSJCdWcgcmVwb3J0cyI+8J+QmzwvYT48L3RkPgogICAgPC90cj4KICAgIDx0cj4KICAgICAgPHRkIGFsaWduPSJjZW50ZXIiIHZhbGlnbj0idG9wIiB3aWR0aD0iMTQuMjglIj48YSBocmVmPSJodHRwczovL2dpdGh1Yi5jb20vZm9sYnJlY2h0Ij48aW1nIHNyYz0iaHR0cHM6Ly9hdmF0YXJzLmdpdGh1YnVzZXJjb250ZW50LmNvbS91LzE0NTUzNzg0Nj92PTQ/cz0xMDAiIHdpZHRoPSIxMDBweDsiIGFsdD0iZm9sYnJlY2h0Ii8+PGJyIC8+PHN1Yj48Yj5mb2xicmVjaHQ8L2I+PC9zdWI+PC9hPjxiciAvPjxhIGhyZWY9Imh0dHBzOi8vZ2l0aHViLmNvbS9jaHJpc3RpYW5oZWxsZS9yZWZpdHRlci9pc3N1ZXM/cT1hdXRob3IlM0Fmb2xicmVjaHQiIHRpdGxlPSJCdWcgcmVwb3J0cyI+8J+QmzwvYT48L3RkPgogICAgICA8dGQgYWxpZ249ImNlbnRlciIgdmFsaWduPSJ0b3AiIHdpZHRoPSIxNC4yOCUiPjxhIGhyZWY9Imh0dHBzOi8vZ2l0aHViLmNvbS9tb3J0ZW5sYXVyc2VuIj48aW1nIHNyYz0iaHR0cHM6Ly9hdmF0YXJzLmdpdGh1YnVzZXJjb250ZW50LmNvbS91LzI4NzU5NzM3P3Y9ND9zPTEwMCIgd2lkdGg9IjEwMHB4OyIgYWx0PSJtb3J0ZW5sYXVyc2VuIi8+PGJyIC8+PHN1Yj48Yj5tb3J0ZW5sYXVyc2VuPC9iPjwvc3ViPjwvYT48YnIgLz48YSBocmVmPSJodHRwczovL2dpdGh1Yi5jb20vY2hyaXN0aWFuaGVsbGUvcmVmaXR0ZXIvY29tbWl0cz9hdXRob3I9bW9ydGVubGF1cnNlbiIgdGl0bGU9IkNvZGUiPvCfkrs8L2E+PC90ZD4KICAgICAgPHRkIGFsaWduPSJjZW50ZXIiIHZhbGlnbj0idG9wIiB3aWR0aD0iMTQuMjglIj48YSBocmVmPSJodHRwczovL2dpdGh1Yi5jb20vbWFudWVsLWZlcm5hbmRlei1yb2RyaWd1ZXoiPjxpbWcgc3JjPSJodHRwczovL2F2YXRhcnMuZ2l0aHVidXNlcmNvbnRlbnQuY29tL3UvNDg1MjAyMDU/dj00P3M9MTAwIiB3aWR0aD0iMTAwcHg7IiBhbHQ9Im1hbnVlbC1mZXJuYW5kZXotcm9kcmlndWV6Ii8+PGJyIC8+PHN1Yj48Yj5tYW51ZWwtZmVybmFuZGV6LXJvZHJpZ3VlejwvYj48L3N1Yj48L2E+PGJyIC8+PGEgaHJlZj0iaHR0cHM6Ly9naXRodWIuY29tL2NocmlzdGlhbmhlbGxlL3JlZml0dGVyL2lzc3Vlcz9xPWF1dGhvciUzQW1hbnVlbC1mZXJuYW5kZXotcm9kcmlndWV6IiB0aXRsZT0iQnVnIHJlcG9ydHMiPvCfkJs8L2E+PC90ZD4KICAgICAgPHRkIGFsaWduPSJjZW50ZXIiIHZhbGlnbj0idG9wIiB3aWR0aD0iMTQuMjglIj48YSBocmVmPSJodHRwczovL2dpdGh1Yi5jb20vZWxpeWFtbWluZSI+PGltZyBzcmM9Imh0dHBzOi8vYXZhdGFycy5naXRodWJ1c2VyY29udGVudC5jb20vdS82NjQ0ODA3P3Y9ND9zPTEwMCIgd2lkdGg9IjEwMHB4OyIgYWx0PSJFbGkgWWFtbWluZSIvPjxiciAvPjxzdWI+PGI+RWxpIFlhbW1pbmU8L2I+PC9zdWI+PC9hPjxiciAvPjxhIGhyZWY9Imh0dHBzOi8vZ2l0aHViLmNvbS9jaHJpc3RpYW5oZWxsZS9yZWZpdHRlci9pc3N1ZXM/cT1hdXRob3IlM0FlbGl5YW1taW5lIiB0aXRsZT0iQnVnIHJlcG9ydHMiPvCfkJs8L2E+PC90ZD4KICAgICAgPHRkIGFsaWduPSJjZW50ZXIiIHZhbGlnbj0idG9wIiB3aWR0aD0iMTQuMjglIj48YSBocmVmPSJodHRwczovL2dpdGh1Yi5jb20va2FtaS1wb2kiPjxpbWcgc3JjPSJodHRwczovL2F2YXRhcnMuZ2l0aHVidXNlcmNvbnRlbnQuY29tL3UvNDczMjI2OTE/dj00P3M9MTAwIiB3aWR0aD0iMTAwcHg7IiBhbHQ9ImthbWktcG9pIi8+PGJyIC8+PHN1Yj48Yj5rYW1pLXBvaTwvYj48L3N1Yj48L2E+PGJyIC8+PGEgaHJlZj0iI2lkZWFzLWthbWktcG9pIiB0aXRsZT0iSWRlYXMsIFBsYW5uaW5nLCAmIEZlZWRiYWNrIj7wn6SUPC9hPjwvdGQ+CiAgICAgIDx0ZCBhbGlnbj0iY2VudGVyIiB2YWxpZ249InRvcCIgd2lkdGg9IjE0LjI4JSI+PGEgaHJlZj0iaHR0cHM6Ly9naXRodWIuY29tL1hlZXZpcyI+PGltZyBzcmM9Imh0dHBzOi8vYXZhdGFycy5naXRodWJ1c2VyY29udGVudC5jb20vdS81ODM1MDQ0P3Y9ND9zPTEwMCIgd2lkdGg9IjEwMHB4OyIgYWx0PSJYZWV2aXMiLz48YnIgLz48c3ViPjxiPlhlZXZpczwvYj48L3N1Yj48L2E+PGJyIC8+PGEgaHJlZj0iaHR0cHM6Ly9naXRodWIuY29tL2NocmlzdGlhbmhlbGxlL3JlZml0dGVyL2lzc3Vlcz9xPWF1dGhvciUzQVhlZXZpcyIgdGl0bGU9IkJ1ZyByZXBvcnRzIj7wn5CbPC9hPjwvdGQ+CiAgICAgIDx0ZCBhbGlnbj0iY2VudGVyIiB2YWxpZ249InRvcCIgd2lkdGg9IjE0LjI4JSI+PGEgaHJlZj0iaHR0cHM6Ly9naXRodWIuY29tL0RKNGRkaSI+PGltZyBzcmM9Imh0dHBzOi8vYXZhdGFycy5naXRodWJ1c2VyY29udGVudC5jb20vdS8xNjk2MTAyP3Y9ND9zPTEwMCIgd2lkdGg9IjEwMHB4OyIgYWx0PSJESjRkZGkiLz48YnIgLz48c3ViPjxiPkRKNGRkaTwvYj48L3N1Yj48L2E+PGJyIC8+PGEgaHJlZj0iaHR0cHM6Ly9naXRodWIuY29tL2NocmlzdGlhbmhlbGxlL3JlZml0dGVyL2NvbW1pdHM/YXV0aG9yPURKNGRkaSIgdGl0bGU9IkNvZGUiPvCfkrs8L2E+IDxhIGhyZWY9IiNpZGVhcy1ESjRkZGkiIHRpdGxlPSJJZGVhcywgUGxhbm5pbmcsICYgRmVlZGJhY2siPvCfpJQ8L2E+PC90ZD4KICAgIDwvdHI+CiAgICA8dHI+CiAgICAgIDx0ZCBhbGlnbj0iY2VudGVyIiB2YWxpZ249InRvcCIgd2lkdGg9IjE0LjI4JSI+PGEgaHJlZj0iaHR0cHM6Ly9naXRodWIuY29tL2RpcmVuY2FuY2F0YWxrYXlhIj48aW1nIHNyYz0iaHR0cHM6Ly9hdmF0YXJzLmdpdGh1YnVzZXJjb250ZW50LmNvbS91LzU3MjIzNzMyP3Y9ND9zPTEwMCIgd2lkdGg9IjEwMHB4OyIgYWx0PSJkaXJlbmNhbmNhdGFsa2F5YSIvPjxiciAvPjxzdWI+PGI+ZGlyZW5jYW5jYXRhbGtheWE8L2I+PC9zdWI+PC9hPjxiciAvPjxhIGhyZWY9Imh0dHBzOi8vZ2l0aHViLmNvbS9jaHJpc3RpYW5oZWxsZS9yZWZpdHRlci9jb21taXRzP2F1dGhvcj1kaXJlbmNhbmNhdGFsa2F5YSIgdGl0bGU9IkNvZGUiPvCfkrs8L2E+PC90ZD4KICAgICAgPHRkIGFsaWduPSJjZW50ZXIiIHZhbGlnbj0idG9wIiB3aWR0aD0iMTQuMjglIj48YSBocmVmPSJodHRwczovL2dpdGh1Yi5jb20vcm9icGFsbSI+PGltZyBzcmM9Imh0dHBzOi8vYXZhdGFycy5naXRodWJ1c2VyY29udGVudC5jb20vdS8xNDkzOTUzMD92PTQ/cz0xMDAiIHdpZHRoPSIxMDBweDsiIGFsdD0iUm9iZXJ0IFBhbG1xdmlzdCIvPjxiciAvPjxzdWI+PGI+Um9iZXJ0IFBhbG1xdmlzdDwvYj48L3N1Yj48L2E+PGJyIC8+PGEgaHJlZj0iI2lkZWFzLXJvYnBhbG0iIHRpdGxlPSJJZGVhcywgUGxhbm5pbmcsICYgRmVlZGJhY2siPvCfpJQ8L2E+IDxhIGhyZWY9Imh0dHBzOi8vZ2l0aHViLmNvbS9jaHJpc3RpYW5oZWxsZS9yZWZpdHRlci9jb21taXRzP2F1dGhvcj1yb2JwYWxtIiB0aXRsZT0iQ29kZSI+8J+SuzwvYT48L3RkPgogICAgICA8dGQgYWxpZ249ImNlbnRlciIgdmFsaWduPSJ0b3AiIHdpZHRoPSIxNC4yOCUiPjxhIGhyZWY9Imh0dHBzOi8vZ2l0aHViLmNvbS9UaW1vdGh5TWFra2lzb24iPjxpbWcgc3JjPSJodHRwczovL2F2YXRhcnMuZ2l0aHVidXNlcmNvbnRlbnQuY29tL3UvNDkzNDk1MTM/dj00P3M9MTAwIiB3aWR0aD0iMTAwcHg7IiBhbHQ9IlRpbSBNIi8+PGJyIC8+PHN1Yj48Yj5UaW0gTTwvYj48L3N1Yj48L2E+PGJyIC8+PGEgaHJlZj0iaHR0cHM6Ly9naXRodWIuY29tL2NocmlzdGlhbmhlbGxlL3JlZml0dGVyL2NvbW1pdHM/YXV0aG9yPVRpbW90aHlNYWtraXNvbiIgdGl0bGU9IkRvY3VtZW50YXRpb24iPvCfk5Y8L2E+PC90ZD4KICAgICAgPHRkIGFsaWduPSJjZW50ZXIiIHZhbGlnbj0idG9wIiB3aWR0aD0iMTQuMjglIj48YSBocmVmPSJodHRwczovL2dpdGh1Yi5jb20vamFuZm9sYnJlY2h0Ij48aW1nIHNyYz0iaHR0cHM6Ly9hdmF0YXJzLmdpdGh1YnVzZXJjb250ZW50LmNvbS91LzQyMTg2NjA0P3Y9ND9zPTEwMCIgd2lkdGg9IjEwMHB4OyIgYWx0PSJqYW5mb2xicmVjaHQiLz48YnIgLz48c3ViPjxiPmphbmZvbGJyZWNodDwvYj48L3N1Yj48L2E+PGJyIC8+PGEgaHJlZj0iI2lkZWFzLWphbmZvbGJyZWNodCIgdGl0bGU9IklkZWFzLCBQbGFubmluZywgJiBGZWVkYmFjayI+8J+klDwvYT4gPGEgaHJlZj0iaHR0cHM6Ly9naXRodWIuY29tL2NocmlzdGlhbmhlbGxlL3JlZml0dGVyL2NvbW1pdHM/YXV0aG9yPWphbmZvbGJyZWNodCIgdGl0bGU9IkNvZGUiPvCfkrs8L2E+PC90ZD4KICAgICAgPHRkIGFsaWduPSJjZW50ZXIiIHZhbGlnbj0idG9wIiB3aWR0aD0iMTQuMjglIj48YSBocmVmPSJodHRwczovL2dpdGh1Yi5jb20vb3NjLW5zZWd1aW4iPjxpbWcgc3JjPSJodHRwczovL2F2YXRhcnMuZ2l0aHVidXNlcmNvbnRlbnQuY29tL3UvMTMzOTEwMzA5P3Y9ND9zPTEwMCIgd2lkdGg9IjEwMHB4OyIgYWx0PSJOaWNrIFNlZ3VpbiIvPjxiciAvPjxzdWI+PGI+TmljayBTZWd1aW48L2I+PC9zdWI+PC9hPjxiciAvPjxhIGhyZWY9Imh0dHBzOi8vZ2l0aHViLmNvbS9jaHJpc3RpYW5oZWxsZS9yZWZpdHRlci9jb21taXRzP2F1dGhvcj1vc2MtbnNlZ3VpbiIgdGl0bGU9IkNvZGUiPvCfkrs8L2E+PC90ZD4KICAgICAgPHRkIGFsaWduPSJjZW50ZXIiIHZhbGlnbj0idG9wIiB3aWR0aD0iMTQuMjglIj48YSBocmVmPSJodHRwczovL2dpdGh1Yi5jb20vZGF2aWQtYnJpbmstdGFsb2d5Ij48aW1nIHNyYz0iaHR0cHM6Ly9hdmF0YXJzLmdpdGh1YnVzZXJjb250ZW50LmNvbS91LzQzODI4NzM5P3Y9ND9zPTEwMCIgd2lkdGg9IjEwMHB4OyIgYWx0PSJEYXZpZCBCcmluayIvPjxiciAvPjxzdWI+PGI+RGF2aWQgQnJpbms8L2I+PC9zdWI+PC9hPjxiciAvPjxhIGhyZWY9Imh0dHBzOi8vZ2l0aHViLmNvbS9jaHJpc3RpYW5oZWxsZS9yZWZpdHRlci9pc3N1ZXM/cT1hdXRob3IlM0FkYXZpZC1icmluay10YWxvZ3kiIHRpdGxlPSJCdWcgcmVwb3J0cyI+8J+QmzwvYT4gPGEgaHJlZj0iaHR0cHM6Ly9naXRodWIuY29tL2NocmlzdGlhbmhlbGxlL3JlZml0dGVyL2NvbW1pdHM/YXV0aG9yPWRhdmlkLWJyaW5rLXRhbG9neSIgdGl0bGU9IkNvZGUiPvCfkrs8L2E+PC90ZD4KICAgICAgPHRkIGFsaWduPSJjZW50ZXIiIHZhbGlnbj0idG9wIiB3aWR0aD0iMTQuMjglIj48YSBocmVmPSJodHRwczovL2dpdGh1Yi5jb20vZGFtbWl0amFuZXQiPjxpbWcgc3JjPSJodHRwczovL2F2YXRhcnMuZ2l0aHVidXNlcmNvbnRlbnQuY29tL3UvOTUyNzIzP3Y9ND9zPTEwMCIgd2lkdGg9IjEwMHB4OyIgYWx0PSJTdHUgV2lsc29uIi8+PGJyIC8+PHN1Yj48Yj5TdHUgV2lsc29uPC9iPjwvc3ViPjwvYT48YnIgLz48YSBocmVmPSIjaWRlYXMtZGFtbWl0amFuZXQiIHRpdGxlPSJJZGVhcywgUGxhbm5pbmcsICYgRmVlZGJhY2siPvCfpJQ8L2E+IDxhIGhyZWY9Imh0dHBzOi8vZ2l0aHViLmNvbS9jaHJpc3RpYW5oZWxsZS9yZWZpdHRlci9jb21taXRzP2F1dGhvcj1kYW1taXRqYW5ldCIgdGl0bGU9IkNvZGUiPvCfkrs8L2E+PC90ZD4KICAgIDwvdHI+CiAgICA8dHI+CiAgICAgIDx0ZCBhbGlnbj0iY2VudGVyIiB2YWxpZ249InRvcCIgd2lkdGg9IjE0LjI4JSI+PGEgaHJlZj0iaHR0cHM6Ly9naXRodWIuY29tL3NoYXJwemlsbGEiPjxpbWcgc3JjPSJodHRwczovL2F2YXRhcnMuZ2l0aHVidXNlcmNvbnRlbnQuY29tL3UvMTY3NjM2MzQ/dj00P3M9MTAwIiB3aWR0aD0iMTAwcHg7IiBhbHQ9InNoYXJwemlsbGEiLz48YnIgLz48c3ViPjxiPnNoYXJwemlsbGE8L2I+PC9zdWI+PC9hPjxiciAvPjxhIGhyZWY9IiNpZGVhcy1zaGFycHppbGxhIiB0aXRsZT0iSWRlYXMsIFBsYW5uaW5nLCAmIEZlZWRiYWNrIj7wn6SUPC9hPjwvdGQ+CiAgICAgIDx0ZCBhbGlnbj0iY2VudGVyIiB2YWxpZ249InRvcCIgd2lkdGg9IjE0LjI4JSI+PGEgaHJlZj0iaHR0cHM6Ly9naXRodWIuY29tL0phcHBpbmVuIj48aW1nIHNyYz0iaHR0cHM6Ly9hdmF0YXJzLmdpdGh1YnVzZXJjb250ZW50LmNvbS91LzQ0NDA4NDk3P3Y9ND9zPTEwMCIgd2lkdGg9IjEwMHB4OyIgYWx0PSJUYXR1Ii8+PGJyIC8+PHN1Yj48Yj5UYXR1PC9iPjwvc3ViPjwvYT48YnIgLz48YSBocmVmPSJodHRwczovL2dpdGh1Yi5jb20vY2hyaXN0aWFuaGVsbGUvcmVmaXR0ZXIvaXNzdWVzP3E9YXV0aG9yJTNBSmFwcGluZW4iIHRpdGxlPSJCdWcgcmVwb3J0cyI+8J+QmzwvYT48L3RkPgogICAgICA8dGQgYWxpZ249ImNlbnRlciIgdmFsaWduPSJ0b3AiIHdpZHRoPSIxNC4yOCUiPjxhIGhyZWY9Imh0dHA6Ly93d3cucmVzcGF3bnNpdmUuY29tIj48aW1nIHNyYz0iaHR0cHM6Ly9hdmF0YXJzLmdpdGh1YnVzZXJjb250ZW50LmNvbS91LzQyNzIzMDc/dj00P3M9MTAwIiB3aWR0aD0iMTAwcHg7IiBhbHQ9IkrDqXLDqW15IEJSVU4tUElDQVJEIi8+PGJyIC8+PHN1Yj48Yj5Kw6lyw6lteSBCUlVOLVBJQ0FSRDwvYj48L3N1Yj48L2E+PGJyIC8+PGEgaHJlZj0iI2lkZWFzLUplcmVteUJQIiB0aXRsZT0iSWRlYXMsIFBsYW5uaW5nLCAmIEZlZWRiYWNrIj7wn6SUPC9hPjwvdGQ+CiAgICAgIDx0ZCBhbGlnbj0iY2VudGVyIiB2YWxpZ249InRvcCIgd2lkdGg9IjE0LjI4JSI+PGEgaHJlZj0iaHR0cHM6Ly9naXRodWIuY29tL2ViYXJuYXJkIj48aW1nIHNyYz0iaHR0cHM6Ly9hdmF0YXJzLmdpdGh1YnVzZXJjb250ZW50LmNvbS91LzEwNTk2ODM/dj00P3M9MTAwIiB3aWR0aD0iMTAwcHg7IiBhbHQ9IkVkIEJhcm5hcmQiLz48YnIgLz48c3ViPjxiPkVkIEJhcm5hcmQ8L2I+PC9zdWI+PC9hPjxiciAvPjxhIGhyZWY9IiNpZGVhcy1lYmFybmFyZCIgdGl0bGU9IklkZWFzLCBQbGFubmluZywgJiBGZWVkYmFjayI+8J+klDwvYT48L3RkPgogICAgPC90cj4KICA8L3Rib2R5Pgo8L3RhYmxlPgoKPCEtLSBtYXJrZG93bmxpbnQtcmVzdG9yZSAtLT4KPCEtLSBwcmV0dGllci1pZ25vcmUtZW5kIC0tPgoKPCEtLSBBTEwtQ09OVFJJQlVUT1JTLUxJU1Q6RU5EIC0tPgoKIwoKRm9yIHRpcHMgYW5kIHRyaWNrcyBvbiBzb2Z0d2FyZSBkZXZlbG9wbWVudCwgY2hlY2sgb3V0IFtteSBibG9nXShodHRwczovL2NocmlzdGlhbmhlbGxlLmNvbSkKCklmIHlvdSBmaW5kIHRoaXMgdXNlZnVsIGFuZCBmZWVsIGEgYml0IGdlbmVyb3VzIHRoZW4gZmVlbCBmcmVlIHRvIFtidXkgbWUgYSBjb2ZmZWUg4piVXShodHRwczovL3d3dy5idXltZWFjb2ZmZWUuY29tL2NocmlzdGlhbmhlbGxlKQo= - readmeEtag: '"8ec0fe4e8a7fb507482777066a8598ccb1b49e6d7ea0997db3df3b719bf6e3c8"' - readmeLastModified: Thu, 11 Jul 2024 20:22:41 GMT + WyFbQnVpbGRdKGh0dHBzOi8vZ2l0aHViLmNvbS9jaHJpc3RpYW5oZWxsZS9yZWZpdHRlci9hY3Rpb25zL3dvcmtmbG93cy9idWlsZC55bWwvYmFkZ2Uuc3ZnKV0oaHR0cHM6Ly9naXRodWIuY29tL2NocmlzdGlhbmhlbGxlL3JlZml0dGVyL2FjdGlvbnMvd29ya2Zsb3dzL2J1aWxkLnltbCkKWyFbU21va2UgVGVzdHNdKGh0dHBzOi8vZ2l0aHViLmNvbS9jaHJpc3RpYW5oZWxsZS9yZWZpdHRlci9hY3Rpb25zL3dvcmtmbG93cy9zbW9rZS10ZXN0cy55bWwvYmFkZ2Uuc3ZnKV0oaHR0cHM6Ly9naXRodWIuY29tL2NocmlzdGlhbmhlbGxlL3JlZml0dGVyL2FjdGlvbnMvd29ya2Zsb3dzL3Ntb2tlLXRlc3RzLnltbCkKWyFbTnVHZXRdKGh0dHBzOi8vaW1nLnNoaWVsZHMuaW8vbnVnZXQvdi9yZWZpdHRlcj9jb2xvcj1ibHVlKV0oaHR0cHM6Ly93d3cubnVnZXQub3JnL3BhY2thZ2VzL3JlZml0dGVyKQpbIVtRdWFsaXR5IEdhdGUgU3RhdHVzXShodHRwczovL3NvbmFyY2xvdWQuaW8vYXBpL3Byb2plY3RfYmFkZ2VzL21lYXN1cmU/cHJvamVjdD1jaHJpc3RpYW5oZWxsZV9yZWZpdHRlciZtZXRyaWM9YWxlcnRfc3RhdHVzKV0oaHR0cHM6Ly9zb25hcmNsb3VkLmlvL3N1bW1hcnkvbmV3X2NvZGU/aWQ9Y2hyaXN0aWFuaGVsbGVfcmVmaXR0ZXIpClshW2NvZGVjb3ZdKGh0dHBzOi8vY29kZWNvdi5pby9naC9jaHJpc3RpYW5oZWxsZS9yZWZpdHRlci9ncmFwaC9iYWRnZS5zdmc/dG9rZW49MjQyWVQxTjZUMildKGh0dHBzOi8vY29kZWNvdi5pby9naC9jaHJpc3RpYW5oZWxsZS9yZWZpdHRlcikKCjwhLS0gQUxMLUNPTlRSSUJVVE9SUy1CQURHRTpTVEFSVCAtIERvIG5vdCByZW1vdmUgb3IgbW9kaWZ5IHRoaXMgc2VjdGlvbiAtLT4KWyFbQWxsIENvbnRyaWJ1dG9yc10oaHR0cHM6Ly9pbWcuc2hpZWxkcy5pby9iYWRnZS9hbGxfY29udHJpYnV0b3JzLTQ2LW9yYW5nZS5zdmc/c3R5bGU9ZmxhdC1zcXVhcmUpXSgjY29udHJpYnV0b3JzLSkKPCEtLSBBTEwtQ09OVFJJQlVUT1JTLUJBREdFOkVORCAtLT4KCiMgUmVmaXR0ZXIKUmVmaXR0ZXIgaXMgYSB0b29sIGZvciBnZW5lcmF0aW5nIGEgQyMgUkVTVCBBUEkgQ2xpZW50IHVzaW5nIHRoZSBbUmVmaXRdKGh0dHBzOi8vZ2l0aHViLmNvbS9yZWFjdGl2ZXVpL3JlZml0KSBsaWJyYXJ5LiBSZWZpdHRlciBjYW4gZ2VuZXJhdGUgdGhlIFJlZml0IGludGVyZmFjZSBhbmQgY29udHJhY3RzIGZyb20gT3BlbkFQSSBzcGVjaWZpY2F0aW9ucy4gCgpSZWZpdHRlciBjb21lcyBpbiAyIGZvcm1zOgotIEEgWy5ORVQgQ0xJIFRvb2xdKCNjbGktdG9vbCkgZGlzdHJpYnV0ZWQgdmlhIFtudWdldC5vcmddKGh0dHA6Ly93d3cubnVnZXQub3JnL3BhY2thZ2VzL3JlZml0dGVyKSB0aGF0IG91dHB1dHMgYSBzaW5nbGUgQyMgZmlsZSBvbiBkaXNrCi0gQSBbQyMgU291cmNlIEdlbmVyYXRvcl0oI3NvdXJjZS1nZW5lcmF0b3IpIHZpYSB0aGUgW1JlZml0dGVyLlNvdXJjZUdlbmVyYXRvcl0oaHR0cDovL3d3dy5udWdldC5vcmcvcGFja2FnZXMvcmVmaXR0ZXIuc291cmNlZ2VuZXJhdG9yKSBwYWNrYWdlIHRoYXQgZ2VuZXJhdGVzIGNvZGUgb24gY29tcGlsZSB0aW1lIGJhc2VkIG9uIGEgWy5yZWZpdHRlcl0oIy5yZWZpdHRlci1maWxlLWZvcm1hdCkgd2l0aGluIHRoZSBwcm9qZWN0IGRpcmVjdG9yeS4KCiMjIENMSSBUb29sCgojIyMgSW5zdGFsbGF0aW9uOgoKVGhlIHRvb2wgaXMgcGFja2FnZWQgYXMgYSAuTkVUIFRvb2wgYW5kIGlzIHB1Ymxpc2hlZCB0byBudWdldC5vcmcuIFlvdSBjYW4gaW5zdGFsbCB0aGUgbGF0ZXN0IHZlcnNpb24gb2YgdGhpcyB0b29sIGxpa2UgdGhpczoKCmBgYHNoZWxsCmRvdG5ldCB0b29sIGluc3RhbGwgLS1nbG9iYWwgUmVmaXR0ZXIKYGBgCgojIyMgVXNhZ2U6CgpgYGBzaGVsbAokIHJlZml0dGVyIC0taGVscApgYGAKCmBgYHRleHQKVVNBR0U6CiAgICByZWZpdHRlciBbVVJMIG9yIGlucHV0IGZpbGVdIFtPUFRJT05TXQoKRVhBTVBMRVM6CiAgICByZWZpdHRlciAuL29wZW5hcGkuanNvbgogICAgcmVmaXR0ZXIgaHR0cHM6Ly9wZXRzdG9yZTMuc3dhZ2dlci5pby9hcGkvdjMvb3BlbmFwaS55YW1sCiAgICByZWZpdHRlciAuL29wZW5hcGkuanNvbiAtLXNldHRpbmdzLWZpbGUgLi9vcGVuYXBpLnJlZml0dGVyIC0tb3V0cHV0IC4vR2VuZXJhdGVkQ29kZS5jcwogICAgcmVmaXR0ZXIgLi9vcGVuYXBpLmpzb24gLS1uYW1lc3BhY2UgIllvdXIuTmFtZXNwYWNlLk9mLkNob2ljZS5HZW5lcmF0ZWRDb2RlIiAtLW91dHB1dCAuL0dlbmVyYXRlZENvZGUuY3MKICAgIHJlZml0dGVyIC4vb3BlbmFwaS5qc29uIC0tbmFtZXNwYWNlICJZb3VyLk5hbWVzcGFjZS5PZi5DaG9pY2UuR2VuZXJhdGVkQ29kZSIgLS1pbnRlcm5hbAogICAgcmVmaXR0ZXIgLi9vcGVuYXBpLmpzb24gLS1vdXRwdXQgLi9JR2VuZXJhdGVkQ29kZS5jcyAtLWludGVyZmFjZS1vbmx5CiAgICByZWZpdHRlciAuL29wZW5hcGkuanNvbiAtLXVzZS1hcGktcmVzcG9uc2UKICAgIHJlZml0dGVyIC4vb3BlbmFwaS5qc29uIC0tY2FuY2VsbGF0aW9uLXRva2VucwogICAgcmVmaXR0ZXIgLi9vcGVuYXBpLmpzb24gLS1uby1vcGVyYXRpb24taGVhZGVycwogICAgcmVmaXR0ZXIgLi9vcGVuYXBpLmpzb24gLS1uby1hY2NlcHQtaGVhZGVycwogICAgcmVmaXR0ZXIgLi9vcGVuYXBpLmpzb24gLS11c2UtaXNvLWRhdGUtZm9ybWF0CiAgICByZWZpdHRlciAuL29wZW5hcGkuanNvbiAtLWFkZGl0aW9uYWwtbmFtZXNwYWNlICJZb3VyLkFkZGl0aW9uYWwuTmFtZXNwYWNlIiAtLWFkZGl0aW9uYWwtbmFtZXNwYWNlICJZb3VyLk90aGVyLkFkZGl0aW9uYWwuTmFtZXNwYWNlIgogICAgcmVmaXR0ZXIgLi9vcGVuYXBpLmpzb24gLS1tdWx0aXBsZS1pbnRlcmZhY2VzIEJ5RW5kcG9pbnQKICAgIHJlZml0dGVyIC4vb3BlbmFwaS5qc29uIC0tdGFnIFBldCAtLXRhZyBTdG9yZSAtLXRhZyBVc2VyCiAgICByZWZpdHRlciAuL29wZW5hcGkuanNvbiAtLW1hdGNoLXBhdGggJ14vcGV0Ly4qJwogICAgcmVmaXR0ZXIgLi9vcGVuYXBpLmpzb24gLS10cmltLXVudXNlZC1zY2hlbWEKICAgIHJlZml0dGVyIC4vb3BlbmFwaS5qc29uIC0tdHJpbS11bnVzZWQtc2NoZW1hICAtLWtlZXAtc2NoZW1hICdeTW9kZWwkJyAtLWtlZXAtc2NoZW1hICdeUGVyc29uLisnCiAgICByZWZpdHRlciAuL29wZW5hcGkuanNvbiAtLW5vLWRlcHJlY2F0ZWQtb3BlcmF0aW9ucwogICAgcmVmaXR0ZXIgLi9vcGVuYXBpLmpzb24gLS1vcGVyYXRpb24tbmFtZS10ZW1wbGF0ZSAne29wZXJhdGlvbk5hbWV9QXN5bmMnCiAgICByZWZpdHRlciAuL29wZW5hcGkuanNvbiAtLW9wdGlvbmFsLW51bGxhYmxlLXBhcmFtZXRlcnMKCkFSR1VNRU5UUzoKICAgIFtVUkwgb3IgaW5wdXQgZmlsZV0gICAgVVJMIG9yIGZpbGUgcGF0aCB0byBPcGVuQVBJIFNwZWNpZmljYXRpb24gZmlsZQoKT1BUSU9OUzoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgREVGQVVMVCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgIC1oLCAtLWhlbHAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQcmludHMgaGVscCBpbmZvcm1hdGlvbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgIC12LCAtLXZlcnNpb24gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQcmludHMgdmVyc2lvbiBpbmZvcm1hdGlvbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgIC1zLCAtLXNldHRpbmdzLWZpbGUgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQYXRoIHRvIC5yZWZpdHRlciBzZXR0aW5ncyBmaWxlLiBTcGVjaWZ5aW5nIHRoaXMgd2lsbCBpZ25vcmUgYWxsIG90aGVyIHNldHRpbmdzIChleGNlcHQgZm9yIC0tb3V0cHV0KSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgIC1uLCAtLW5hbWVzcGFjZSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR2VuZXJhdGVkQ29kZSAgICBEZWZhdWx0IG5hbWVzcGFjZSB0byB1c2UgZm9yIGdlbmVyYXRlZCB0eXBlcyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgIC1vLCAtLW91dHB1dCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgT3V0cHV0LmNzICAgICAgICBQYXRoIHRvIE91dHB1dCBmaWxlICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAtLW5vLWF1dG8tZ2VuZXJhdGVkLWhlYWRlciAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBEb24ndCBhZGQgPGF1dG8tZ2VuZXJhdGVkPiBoZWFkZXIgdG8gb3V0cHV0IGZpbGUgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAtLW5vLWFjY2VwdC1oZWFkZXJzICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBEb24ndCBhZGQgPEFjY2VwdD4gaGVhZGVyIHRvIG91dHB1dCBmaWxlICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAtLWludGVyZmFjZS1vbmx5ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBEb24ndCBnZW5lcmF0ZSBjb250cmFjdCB0eXBlcyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAtLXVzZS1hcGktcmVzcG9uc2UgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBSZXR1cm4gVGFzazxJQXBpUmVzcG9uc2U8VD4+IGluc3RlYWQgb2YgVGFzazxUPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAtLXVzZS1vYnNlcnZhYmxlLXJlc3BvbnNlICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBSZXR1cm4gSU9ic2VydmFibGUgaW5zdGVhZCBvZiBUYXNrICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAtLWludGVybmFsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTZXQgdGhlIGFjY2Vzc2liaWxpdHkgb2YgdGhlIGdlbmVyYXRlZCB0eXBlcyB0byAnaW50ZXJuYWwnICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAtLWNhbmNlbGxhdGlvbi10b2tlbnMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBVc2UgY2FuY2VsbGF0aW9uIHRva2VucyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAtLW5vLW9wZXJhdGlvbi1oZWFkZXJzICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBEb24ndCBnZW5lcmF0ZSBvcGVyYXRpb24gaGVhZGVycyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAtLW5vLWxvZ2dpbmcgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBEb24ndCBsb2cgZXJyb3JzIG9yIGNvbGxlY3QgdGVsZW1ldHJ5ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAtLWFkZGl0aW9uYWwtbmFtZXNwYWNlICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBBZGQgYWRkaXRpb25hbCBuYW1lc3BhY2UgdG8gZ2VuZXJhdGVkIHR5cGVzICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAtLWV4Y2x1ZGUtbmFtZXNwYWNlICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBFeGNsdWRlIG5hbWVzcGFjZSBvbiBnZW5lcmF0ZWQgdHlwZXMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAtLXVzZS1pc28tZGF0ZS1mb3JtYXQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBFeHBsaWNpdGx5IGZvcm1hdCBkYXRlIHF1ZXJ5IHN0cmluZyBwYXJhbWV0ZXJzIGluIElTTyA4NjAxIHN0YW5kYXJkIGRhdGUgZm9ybWF0IHVzaW5nIGRlbGltaXRlcnMgKDIwMjMtMDYtMTUpICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAtLW11bHRpcGxlLWludGVyZmFjZXMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHZW5lcmF0ZSBhIFJlZml0IGludGVyZmFjZSBmb3IgZWFjaCBlbmRwb2ludC4gTWF5IGJlIG9uZSBvZiBCeUVuZHBvaW50LCBCeVRhZyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAtLW1hdGNoLXBhdGggICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBPbmx5IGluY2x1ZGUgUGF0aHMgdGhhdCBtYXRjaCB0aGUgcHJvdmlkZWQgcmVndWxhciBleHByZXNzaW9uLiBNYXkgYmUgc2V0IG11bHRpcGxlIHRpbWVzICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAtLXRhZyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBPbmx5IGluY2x1ZGUgRW5kcG9pbnRzIHRoYXQgY29udGFpbiB0aGlzIHRhZy4gTWF5IGJlIHNldCBtdWx0aXBsZSB0aW1lcyBhbmQgcmVzdWx0IGluIE9SJ2VkIGV2YWx1YXRpb24gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAtLXNraXAtdmFsaWRhdGlvbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTa2lwIHZhbGlkYXRpb24gb2YgdGhlIE9wZW5BUEkgc3BlY2lmaWNhdGlvbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAtLW5vLWRlcHJlY2F0ZWQtb3BlcmF0aW9ucyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBEb24ndCBnZW5lcmF0ZSBkZXByZWNhdGVkIG9wZXJhdGlvbnMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAtLW9wZXJhdGlvbi1uYW1lLXRlbXBsYXRlICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHZW5lcmF0ZSBvcGVyYXRpb24gbmFtZXMgdXNpbmcgcGF0dGVybi4gV2hlbiB1c2luZyAtLW11bHRpcGxlLWludGVyZmFjZXMgQnlFbmRwb2ludCwgdGhpcyBpcyBuYW1lIG9mIHRoZSBFeGVjdXRlKCkgbWV0aG9kIGluIHRoZSBpbnRlcmZhY2UKICAgICAgICAtLW9wdGlvbmFsLW51bGxhYmxlLXBhcmFtZXRlcnMgICAgICAgICAgICAgICAgICAgICAgICAgICBHZW5lcmF0ZSBudWxsYWJsZSBwYXJhbWV0ZXJzIGFzIG9wdGlvbmFsIHBhcmFtZXRlcnMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAtLXRyaW0tdW51c2VkLXNjaGVtYSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBSZW1vdmVzIHVucmVmZXJlbmNlZCBjb21wb25lbnRzIHNjaGVtYSB0byBrZWVwIHRoZSBnZW5lcmF0ZWQgb3V0cHV0IHRvIGEgbWluaW11bSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAtLWtlZXAtc2NoZW1hICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBGb3JjZSB0byBrZWVwIG1hdGNoaW5nIHNjaGVtYSwgdXNlcyByZWd1bGFyIGV4cHJlc3Npb25zLiBVc2UgdG9nZXRoZXIgd2l0aCAiLS10cmltLXVudXNlZC1zY2hlbWEiLiBDYW4gYmUgc2V0IG11bHRpcGxlIHRpbWVzICAgICAgICAgICAgICAKICAgICAgICAtLW5vLWJhbm5lciAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBEb24ndCBzaG93IGRvbmF0aW9uIGJhbm5lciAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAtLXNraXAtZGVmYXVsdC1hZGRpdGlvbmFsLXByb3BlcnRpZXMgICAgICAgICAgICAgICAgICAgICBTZXQgdG8gdHJ1ZSB0byBza2lwIGRlZmF1bHQgYWRkaXRpb25hbCBwcm9wZXJ0aWVzICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAtLW9wZXJhdGlvbi1uYW1lLWdlbmVyYXRvciAgICAgICAgICAgICAgRGVmYXVsdCAgICAgICAgICBUaGUgTlN3YWcgSU9wZXJhdGlvbk5hbWVHZW5lcmF0b3IgaW1wbGVtZW50YXRpb24gdG8gdXNlLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBNYXkgYmUgb25lIG9mOiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAtIERlZmF1bHQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAtIE11bHRpcGxlQ2xpZW50c0Zyb21PcGVyYXRpb25JZCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAtIE11bHRpcGxlQ2xpZW50c0Zyb21QYXRoU2VnbWVudHMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAtIE11bHRpcGxlQ2xpZW50c0Zyb21GaXJzdFRhZ0FuZE9wZXJhdGlvbklkICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAtIE11bHRpcGxlQ2xpZW50c0Zyb21GaXJzdFRhZ0FuZE9wZXJhdGlvbk5hbWUgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAtIE11bHRpcGxlQ2xpZW50c0Zyb21GaXJzdFRhZ0FuZFBhdGhTZWdtZW50cyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAtIFNpbmdsZUNsaWVudEZyb21PcGVyYXRpb25JZCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAtIFNpbmdsZUNsaWVudEZyb21QYXRoU2VnbWVudHMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTZWUgaHR0cHM6Ly9yZWZpdHRlci5naXRodWIuaW8vYXBpL1JlZml0dGVyLkNvcmUuT3BlcmF0aW9uTmFtZUdlbmVyYXRvclR5cGVzLmh0bWwgZm9yIG1vcmUgaW5mb3JtYXRpb24gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAtLWltbXV0YWJsZS1yZWNvcmRzICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHZW5lcmF0ZSBjb250cmFjdHMgYXMgaW1tdXRhYmxlIHJlY29yZHMgaW5zdGVhZCBvZiBjbGFzc2VzICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKYGBgCgpUbyBnZW5lcmF0ZSBjb2RlIGZyb20gYW4gT3BlbkFQSSBzcGVjaWZpY2F0aW9ucyBmaWxlLCBydW4gdGhlIGZvbGxvd2luZzoKCmBgYHNoZWxsCiQgcmVmaXR0ZXIgW3BhdGggdG8gT3BlbkFQSSBzcGVjIGZpbGVdIC0tbmFtZXNwYWNlICJbWW91ci5OYW1lc3BhY2UuT2YuQ2hvaWNlLkdlbmVyYXRlZENvZGVdIgpgYGAKClRoaXMgd2lsbCBnZW5lcmF0ZSBhIGZpbGUgY2FsbGVkIGBPdXRwdXQuY3NgIHdoaWNoIGNvbnRhaW5zIHRoZSBSZWZpdCBpbnRlcmZhY2UgYW5kIGNvbnRyYWN0IGNsYXNzZXMgZ2VuZXJhdGVkIHVzaW5nIFtOU3dhZ10oaHR0cHM6Ly9naXRodWIuY29tL1JpY29TdXRlci9OU3dhZykKCiMjIFNvdXJjZSBHZW5lcmF0b3IKClJlZml0dGVyIGlzIGF2YWlsYWJsZSBhcyBhIEMjIFNvdXJjZSBHZW5lcmF0b3IgdGhhdCB1c2VzIHRoZSBbUmVmaXR0ZXIuQ29yZV0oaHR0cHM6Ly9naXRodWIuY29tL2NocmlzdGlhbmhlbGxlL3JlZml0dGVyL3RyZWUvbWFpbi9zcmMvUmVmaXR0ZXIuQ29yZSkgbGlicmFyeSBmb3IgZ2VuZXJhdGluZyBhIFJFU1QgQVBJIENsaWVudCB1c2luZyB0aGUgW1JlZml0XShodHRwczovL2dpdGh1Yi5jb20vcmVhY3RpdmV1aS9yZWZpdCkgbGlicmFyeS4gUmVmaXR0ZXIgY2FuIGdlbmVyYXRlIHRoZSBSZWZpdCBpbnRlcmZhY2UgZnJvbSBPcGVuQVBJIHNwZWNpZmljYXRpb25zCgpUaGUgUmVmaXR0ZXIgc291cmNlIGdlbmVyYXRvciBpcyBhIGJpdCB1bnRyYWRpdGlvbmFsIGluIGEgc2Vuc2UgdGhhdCBpdCBjcmVhdGVzIGEgZm9sZGVyIGNhbGxlZCBgR2VuZXJhdGVkYCBpbiB0aGUgc2FtZSBsb2NhdGlvbiBhcyB0aGUgYC5yZWZpdHRlcmAgZmlsZSBhbmQgZ2VuZXJhdGVzIGZpbGVzIHRvIGRpc2sgdW5kZXIgdGhlIGBHZW5lcmF0ZWRgIGZvbGRlciAoY2FuIGJlIGNoYW5nZWQgd2l0aCBgLS1vdXRwdXRGb2xkZXJgKS4gVGhlIHNvdXJjZSBnZW5lcmF0b3Igb3V0cHV0IHNob3VsZCBiZSBpbmNsdWRlZCBpbiB0aGUgcHJvamVjdCBhbmQgY29tbWl0dGVkIHRvIHNvdXJjZSBjb250cm9sLiBUaGlzIGlzIGRvbmUgYmVjYXVzZSB0aGVyZSBpcyBubyBvdGhlciB3YXkgdG8gdHJpZ2dlciB0aGUgUmVmaXQgc291cmNlIGdlbmVyYXRvciB0byBwaWNrdXAgdGhlIFJlZml0dGVyIGdlbmVyYXRlZCBjb2RlIAoKKioqKFRyYW5zbGF0aW9uOiBJIGNvdWxkbid0IGZvciB0aGUgbGlmZSBvZiBtZSBmaWd1cmUgaG93IHRvIGdldCB0aGF0IHRvIHdvcmssIHNvcnJ5KSoqKgoKIyMjIEluc3RhbGxhdGlvbgoKVGhlIHNvdXJjZSBnZW5lcmF0b3IgaXMgZGlzdHJpYnV0ZWQgYXMgYSBOdUdldCBwYWNrYWdlIGFuZCBzaG91bGQgYmUgaW5zdGFsbGVkIHRvIHRoZSBwcm9qZWN0IHRoYXQgd2lsbCBjb250YWluIHRoZSBnZW5lcmF0ZWQgY29kZQoKYGBgc2hlbGwKZG90bmV0IGFkZCBwYWNrYWdlIFJlZml0dGVyLlNvdXJjZUdlbmVyYXRvcgpgYGAKCiMjIyBVc2FnZQoKVGhpcyBzb3VyY2UgZ2VuZXJhdG9yIGdlbmVyYXRlcyBjb2RlIGJhc2VkIG9uIGFueSBgLnJlZml0dGVyYCBmaWxlIGluY2x1ZGVkIHRvIHRoZSBwcm9qZWN0IGFzIGBBZGRpdGlvbmFsRmlsZXNgLgoKVGhlIGdlbmVyYXRvciBjYW4gYXV0b21hdGljYWxseSBkZXRlY3QgYWxsIGAucmVmaXR0ZXJgIGZpbGVzIGluc2lkZSB0aGUgcHJvamVjdCB0aGF0IHJlZmVyZW5jZWQgdGhlIGBSZWZpdHRlci5Tb3VyY2VHZW5lcmF0b3JgIHBhY2thZ2UgYW5kIHRoZXJlIGlzIG5vIG5lZWQgdG8gaW5jbHVkZSB0aGVtIG1hbnVhbGx5IGFzIGBBZGRpdGlvbmFsRmlsZXNgCgojIyMgLlJlZml0dGVyIEZpbGUgZm9ybWF0CgpUaGUgZm9sbG93aW5nIGlzIGFuIGV4YW1wbGUgYC5yZWZpdHRlcmAgZmlsZQoKYGBganMKewogICJvcGVuQXBpUGF0aCI6ICIvcGF0aC90by95b3VyL29wZW5BUEkiLCAvLyBSZXF1aXJlZAogICJuYW1lc3BhY2UiOiAiT3JnLlN5c3RlbS5TZXJ2aWNlLkFwaS5HZW5lcmF0ZWRDb2RlIiwgLy8gT3B0aW9uYWwuIERlZmF1bHQ9R2VuZXJhdGVkQ29kZQogICJuYW1pbmciOiB7CiAgICAidXNlT3BlbkFwaVRpdGxlIjogZmFsc2UsIC8vIE9wdGlvbmFsLiBEZWZhdWx0PXRydWUKICAgICJpbnRlcmZhY2VOYW1lIjogIk15QXBpQ2xpZW50IiAvLyBPcHRpb25hbC4gRGVmYXVsdD1BcGlDbGllbnQKICB9LAogICJnZW5lcmF0ZUNvbnRyYWN0cyI6IHRydWUsIC8vIE9wdGlvbmFsLiBEZWZhdWx0PXRydWUKICAiZ2VuZXJhdGVYbWxEb2NDb2RlQ29tbWVudHMiOiB0cnVlLCAvLyBPcHRpb25hbC4gRGVmYXVsdD10cnVlCiAgImdlbmVyYXRlU3RhdHVzQ29kZUNvbW1lbnRzIjogdHJ1ZSwgLy8gT3B0aW9uYWwuIERlZmF1bHQ9dHJ1ZQogICJhZGRBdXRvR2VuZXJhdGVkSGVhZGVyIjogdHJ1ZSwgLy8gT3B0aW9uYWwuIERlZmF1bHQ9dHJ1ZQogICJhZGRBY2NlcHRIZWFkZXJzIjogdHJ1ZSwgLy8gT3B0aW9uYWwuIERlZmF1bHQ9dHJ1ZQogICJyZXR1cm5JQXBpUmVzcG9uc2UiOiBmYWxzZSwgLy8gT3B0aW9uYWwuIERlZmF1bHQ9ZmFsc2UKICAicmVzcG9uc2VUeXBlT3ZlcnJpZGUiOiB7IC8vIE9wdGlvbmFsLiBEZWZhdWx0PXt9CiAgICAiRmlsZV9VcGxvYWQiOiAiSUFwaVJlc3BvbnNlIiwKICAgICJGaWxlX0Rvd25sb2FkIjogIlN5c3RlbS5OZXQuSHR0cC5IdHRwQ29udGVudCIKICB9LAogICJnZW5lcmF0ZU9wZXJhdGlvbkhlYWRlcnMiOiB0cnVlLCAvLyBPcHRpb25hbC4gRGVmYXVsdD10cnVlCiAgInR5cGVBY2Nlc3NpYmlsaXR5IjogIlB1YmxpYyIsIC8vIE9wdGlvbmFsLiBWYWx1ZXM9UHVibGljfEludGVybmFsLiBEZWZhdWx0PVB1YmxpYwogICJ1c2VDYW5jZWxsYXRpb25Ub2tlbnMiOiBmYWxzZSwgLy8gT3B0aW9uYWwuIERlZmF1bHQ9ZmFsc2UKICAidXNlSXNvRGF0ZUZvcm1hdCI6IGZhbHNlLCAvLyBPcHRpb25hbC4gRGVmYXVsdD1mYWxzZQogICJtdWx0aXBsZUludGVyZmFjZXMiOiAiQnlFbmRwb2ludCIsIC8vIE9wdGlvbmFsLiBNYXkgYmUgb25lIG9mICJCeUVuZHBvaW50IiBvciAiQnlUYWciCiAgImdlbmVyYXRlRGVwcmVjYXRlZE9wZXJhdGlvbnMiOiBmYWxzZSwgLy8gT3B0aW9uYWwuIERlZmF1bHQ9dHJ1ZQogICJvcGVyYXRpb25OYW1lVGVtcGxhdGUiOiAie29wZXJhdGlvbk5hbWV9QXN5bmMiLCAvLyBPcHRpb25hbC4gTXVzdCBjb250YWluIHtvcGVyYXRpb25OYW1lfSB3aGVuIG11bHRpcGxlSW50ZXJmYWNlcyAhPSBCeUVuZHBvaW50CiAgIm9wdGlvbmFsUGFyYW1ldGVycyI6IGZhbHNlLCAvLyBPcHRpb25hbC4gRGVmYXVsdD1mYWxzZQogICJvdXRwdXRGb2xkZXIiOiAiLi4vQ3VzdG9tT3V0cHV0IiAvLyBPcHRpb25hbC4gRGVmYXVsdD0uL0dlbmVyYXRlZAogICJvdXRwdXRGaWxlbmFtZSI6ICJSZWZpdEludGVyZmFjZS5jcyIsIC8vIE9wdGlvbmFsLiBEZWZhdWx0PU91dHB1dC5jcyBmb3IgQ0xJIHRvb2wKICAiYWRkaXRpb25hbE5hbWVzcGFjZXMiOiBbIC8vIE9wdGlvbmFsCiAgICAiTmFtZXNwYWNlMSIsCiAgICAiTmFtZXNwYWNlMiIKICBdLAogICJpbmNsdWRlVGFncyI6IFsgLy8gT3B0aW9uYWwuIE9wZW5BUEkgVGFnIHRvIGluY2x1ZGUgd2hlbiBnZW5lcmF0aW5nIGNvZGUKICAgICJQZXQiLAogICAgIlN0b3JlIiwKICAgICJVc2VyIgogIF0sCiAgImluY2x1ZGVQYXRoTWF0Y2hlcyI6IFsgLy8gT3B0aW9uYWwuIE9ubHkgaW5jbHVkZSBQYXRocyB0aGF0IG1hdGNoIHRoZSBwcm92aWRlZCByZWd1bGFyIGV4cHJlc3Npb24KICAgICJeL3BldC8uKiIsCiAgICAiXi9zdG9yZS8uKiIKICBdLAogICJ0cmltVW51c2VkU2NoZW1hIjogZmFsc2UsIC8vIE9wdGlvbmFsLiBEZWZhdWx0PWZhbHNlCiAgImtlZXBTY2hlbWFQYXR0ZXJucyI6IFsgLy8gT3B0aW9uYWwuIEZvcmNlIHRvIGtlZXAgbWF0Y2hpbmcgc2NoZW1hLCB1c2VzIHJlZ3VsYXIgZXhwcmVzc2lvbnMuIFVzZSB0b2dldGhlciB3aXRoIHRyaW1VbnVzZWRTY2hlbWE9dHJ1ZQogICAgIl5Nb2RlbCQiLAogICAgIl5QZXJzb24uKyIKICBdLAogICJnZW5lcmF0ZURlZmF1bHRBZGRpdGlvbmFsUHJvcGVydGllcyI6IHRydWUsIC8vIE9wdGlvbmFsLiBkZWZhdWx0PXRydWUKICAib3BlcmF0aW9uTmFtZUdlbmVyYXRvciI6ICJEZWZhdWx0IiwgLy8gT3B0aW9uYWwuIE1heSBiZSBvbmUgb2YgRGVmYXVsdCwgTXVsdGlwbGVDbGllbnRzRnJvbU9wZXJhdGlvbklkLCBNdWx0aXBsZUNsaWVudHNGcm9tUGF0aFNlZ21lbnRzLCBNdWx0aXBsZUNsaWVudHNGcm9tRmlyc3RUYWdBbmRPcGVyYXRpb25JZCwgTXVsdGlwbGVDbGllbnRzRnJvbUZpcnN0VGFnQW5kT3BlcmF0aW9uTmFtZSwgTXVsdGlwbGVDbGllbnRzRnJvbUZpcnN0VGFnQW5kUGF0aFNlZ21lbnRzLCBTaW5nbGVDbGllbnRGcm9tT3BlcmF0aW9uSWQsIFNpbmdsZUNsaWVudEZyb21QYXRoU2VnbWVudHMKICAiaW1tdXRhYmxlUmVjb3JkcyI6IGZhbHNlLAogICJkZXBlbmRlbmN5SW5qZWN0aW9uU2V0dGluZ3MiOiB7IC8vIE9wdGlvbmFsCiAgICAiYmFzZVVybCI6ICJodHRwczovL3BldHN0b3JlMy5zd2FnZ2VyLmlvL2FwaS92MyIsIC8vIE9wdGlvbmFsLiBMZWF2ZSB0aGlzIGJsYW5rIHRvIHNldCB0aGUgYmFzZSBhZGRyZXNzIG1hbnVhbGx5CiAgICAiaHR0cE1lc3NhZ2VIYW5kbGVycyI6IFsgLy8gT3B0aW9uYWwKICAgICAgICAiQXV0aG9yaXphdGlvbk1lc3NhZ2VIYW5kbGVyIiwgCiAgICAgICAgIlRlbGVtZXRyeU1lc3NhZ2VIYW5kbGVyIiAKICAgIF0sCiAgICAidXNlUG9sbHkiOiB0cnVlLCAvLyBERVBSRUNBVEVEIC0gVXNlICJ0cmFuc2llbnRFcnJvckhhbmRsZXIiOiAiTm9uZXxQb2xseXxIdHRwUmVzaWxpZW5jZSIgaW5zdGVhZAogICAgInRyYW5zaWVudEVycm9ySGFuZGxlciI6ICJIdHRwUmVzaWxpZW5jZSIsIC8vIE9wdGlvbmFsLiBTZXQgdGhpcyB0byBjb25maWd1cmUgdHJhbnNpZW50IGVycm9yIGhhbmRsaW5nIHdpdGggYSByZXRyeSBwb2xpY3kgdGhhdCB1c2VzIGEgaml0dGVyZWQgYmFja29mZi4gTWF5IGJlIG9uZSBvZiBOb25lLCBQb2xseSwgSHR0cFJlc2lsaWVuY2UKICAgICJtYXhSZXRyeUNvdW50IjogMywgLy8gT3B0aW9uYWwuIERlZmF1bHQ9NgogICAgImZpcnN0QmFja29mZlJldHJ5SW5TZWNvbmRzIjogMC41IC8vIE9wdGlvbmFsLiBEZWZhdWx0PTEuMAogIH0sCiAgImNvZGVHZW5lcmF0b3JTZXR0aW5ncyI6IHsgLy8gT3B0aW9uYWwuIERlZmF1bHQgc2V0dGluZ3MgYXJlIHRoZSB2YWx1ZXMgc2V0IGluIHRoaXMgZXhhbXBsZQogICAgInJlcXVpcmVkUHJvcGVydGllc011c3RCZURlZmluZWQiOiB0cnVlLAogICAgImdlbmVyYXRlRGF0YUFubm90YXRpb25zIjogdHJ1ZSwKICAgICJhbnlUeXBlIjogIm9iamVjdCIsCiAgICAiZGF0ZVR5cGUiOiAiU3lzdGVtLkRhdGVUaW1lT2Zmc2V0IiwKICAgICJkYXRlVGltZVR5cGUiOiAiU3lzdGVtLkRhdGVUaW1lT2Zmc2V0IiwKICAgICJ0aW1lVHlwZSI6ICJTeXN0ZW0uVGltZVNwYW4iLAogICAgInRpbWVTcGFuVHlwZSI6ICJTeXN0ZW0uVGltZVNwYW4iLAogICAgImFycmF5VHlwZSI6ICJTeXN0ZW0uQ29sbGVjdGlvbnMuR2VuZXJpYy5JQ29sbGVjdGlvbiIsCiAgICAiZGljdGlvbmFyeVR5cGUiOiAiU3lzdGVtLkNvbGxlY3Rpb25zLkdlbmVyaWMuSURpY3Rpb25hcnkiLAogICAgImFycmF5SW5zdGFuY2VUeXBlIjogIlN5c3RlbS5Db2xsZWN0aW9ucy5PYmplY3RNb2RlbC5Db2xsZWN0aW9uIiwKICAgICJkaWN0aW9uYXJ5SW5zdGFuY2VUeXBlIjogIlN5c3RlbS5Db2xsZWN0aW9ucy5HZW5lcmljLkRpY3Rpb25hcnkiLAogICAgImFycmF5QmFzZVR5cGUiOiAiU3lzdGVtLkNvbGxlY3Rpb25zLk9iamVjdE1vZGVsLkNvbGxlY3Rpb24iLAogICAgImRpY3Rpb25hcnlCYXNlVHlwZSI6ICJTeXN0ZW0uQ29sbGVjdGlvbnMuR2VuZXJpYy5EaWN0aW9uYXJ5IiwKICAgICJwcm9wZXJ0eVNldHRlckFjY2Vzc01vZGlmaWVyIjogIiIsCiAgICAiZ2VuZXJhdGVJbW11dGFibGVBcnJheVByb3BlcnRpZXMiOiBmYWxzZSwKICAgICJnZW5lcmF0ZUltbXV0YWJsZURpY3Rpb25hcnlQcm9wZXJ0aWVzIjogZmFsc2UsCiAgICAiaGFuZGxlUmVmZXJlbmNlcyI6IGZhbHNlLAogICAgImpzb25TZXJpYWxpemVyU2V0dGluZ3NUcmFuc2Zvcm1hdGlvbk1ldGhvZCI6IG51bGwsCiAgICAiZ2VuZXJhdGVKc29uTWV0aG9kcyI6IGZhbHNlLAogICAgImVuZm9yY2VGbGFnRW51bXMiOiBmYWxzZSwKICAgICJpbmxpbmVOYW1lZERpY3Rpb25hcmllcyI6IGZhbHNlLAogICAgImlubGluZU5hbWVkVHVwbGVzIjogdHJ1ZSwKICAgICJpbmxpbmVOYW1lZEFycmF5cyI6IGZhbHNlLAogICAgImdlbmVyYXRlT3B0aW9uYWxQcm9wZXJ0aWVzQXNOdWxsYWJsZSI6IGZhbHNlLAogICAgImdlbmVyYXRlTnVsbGFibGVSZWZlcmVuY2VUeXBlcyI6IGZhbHNlLAogICAgImdlbmVyYXRlTmF0aXZlUmVjb3JkcyI6IGZhbHNlLAogICAgImdlbmVyYXRlRGVmYXVsdFZhbHVlcyI6IHRydWUsCiAgICAiaW5saW5lTmFtZWRBbnkiOiBmYWxzZSwKICAgICJleGNsdWRlZFR5cGVOYW1lcyI6IFsKICAgICAgIkV4Y2x1ZGVkVHlwZUZvbyIsCiAgICAgICJFeGNsdWRlZFR5cGVCYXIiCiAgICBdCiAgfQp9CmBgYAoKLSBgb3BlbkFwaVBhdGhgIC0gcG9pbnRzIHRvIHRoZSBPcGVuQVBJIFNwZWNpZmljYXRpb25zIGZpbGUuIFRoaXMgY2FuIGJlIHRoZSBwYXRoIHRvIGEgZmlsZSBzdG9yZWQgb24gZGlzaywgcmVsYXRpdmUgdG8gdGhlIGAucmVmaXR0ZXJgIGZpbGUuIFRoaXMgY2FuIGFsc28gYmUgYSBVUkwgdG8gYSByZW1vdGUgZmlsZSB0aGF0IHdpbGwgYmUgZG93bmxvYWRlZCBvdmVyIEhUVFAvSFRUUFMKLSBgbmFtZXNwYWNlYCAtIHRoZSBuYW1lc3BhY2UgdXNlZCBpbiB0aGUgZ2VuZXJhdGVkIGNvZGUuIElmIG5vdCBzcGVjaWZpZWQsIHRoaXMgZGVmYXVsdHMgdG8gYEdlbmVyYXRlZENvZGVgCi0gYG5hbWluZy51c2VPcGVuQXBpVGl0bGVgIC0gYSBib29sZWFuIGluZGljYXRpbmcgd2hldGhlciB0aGUgT3BlbkFwaSB0aXRsZSBzaG91bGQgYmUgdXNlZC4gRGVmYXVsdCBpcyBgdHJ1ZWAKLSBgbmFtaW5nLmludGVyZmFjZU5hbWVgIC0gdGhlIG5hbWUgb2YgdGhlIGdlbmVyYXRlZCBpbnRlcmZhY2UuIFRoZSBnZW5lcmF0ZWQgY29kZSB3aWxsIGF1dG9tYXRpY2FsbHkgcHJlZml4IHRoaXMgd2l0aCBgSWAgc28gaWYgdGhpcyBzZXQgdG8gYE15QXBpQ2xpZW50YCB0aGVuIHRoZSBnZW5lcmF0ZWQgaW50ZXJmYWNlIGlzIGNhbGxlZCBgSU15QXBpQ2xpZW50YC4gRGVmYXVsdCBpcyBgQXBpQ2xpZW50YAotIGBnZW5lcmF0ZUNvbnRyYWN0c2AgLSBhIGJvb2xlYW4gaW5kaWNhdGluZyB3aGV0aGVyIGNvbnRyYWN0cyBzaG91bGQgYmUgZ2VuZXJhdGVkLiBBIHVzZSBjYXNlIGZvciB0aGlzIGlzIHNldmVyYWwgQVBJIGNsaWVudHMgdXNlIHRoZSBzYW1lIGNvbnRyYWN0cy4gRGVmYXVsdCBpcyBgdHJ1ZWAKLSBgZ2VuZXJhdGVYbWxEb2NDb2RlQ29tbWVudHNgIC0gYSBib29sZWFuIGluZGljYXRpbmcgd2hldGhlciBYTUwgZG9jIGNvbW1lbnRzIHNob3VsZCBiZSBnZW5lcmF0ZWQuIERlZmF1bHQgaXMgYHRydWVgCi0gYGdlbmVyYXRlU3RhdHVzQ29kZUNvbW1lbnRzYCAtIGEgYm9vbGVhbiBpbmRpY2F0aW5nIHdoZXRoZXIgdGhlIFhNTCBkb2NzIGZvciBgQXBpRXhjZXB0aW9uYCBhbmQgYElBcGlSZXNwb25zZWAgY29udGFpbiBkZXRhaWxlZCBkZXNjcmlwdGlvbnMgZm9yIGV2ZXJ5IGRvY3VtZW50ZWQgc3RhdHVzIGNvZGUuIERlZmF1bHQgaXMgYHRydWVgCi0gYGFkZEF1dG9HZW5lcmF0ZWRIZWFkZXJgIC0gYSBib29sZWFuIGluZGljYXRpbmcgd2hldGhlciBYTUwgZG9jIGNvbW1lbnRzIHNob3VsZCBiZSBnZW5lcmF0ZWQuIERlZmF1bHQgaXMgYHRydWVgCi0gYGFkZEFjY2VwdEhlYWRlcnNgIC0gIGEgYm9vbGVhbiBpbmRpY2F0aW5nIHdoZXRoZXIgdG8gYWRkIGFjY2VwdCBoZWFkZXJzIFtIZWFkZXJzKCJBY2NlcHQ6IGFwcGxpY2F0aW9uL2pzb24iKV0uIERlZmF1bHQgaXMgYHRydWVgCi0gYHJldHVybklBcGlSZXNwb25zZWAgLSBhIGJvb2xlYW4gaW5kaWNhdGluZyB3aGV0aGVyIHRvIHJldHVybiBgSUFwaVJlc3BvbnNlPFQ+YCBvYmplY3RzLiBEZWZhdWx0IGlzIGBmYWxzZWAKLSBgcmVzcG9uc2VUeXBlT3ZlcnJpZGVgIC0gYSBkaWN0aW9uYXJ5IHdpdGggb3BlcmF0aW9uIGlkcyAoYXMgc3BlY2lmaWVkIGluIHRoZSBPcGVuQVBJIGRvY3VtZW50KSBhbmQgYSBwYXJ0aWN1bGFyIHJldHVybiB0eXBlIHRvIHVzZS4gVGhlIHR5cGVzIGFyZSB3cmFwcGVkIGluIGEgdGFzaywgYnV0IG90aGVyd2lzZSB1bm1vZGlmaWVkIChzbyBtYWtlIHN1cmUgdG8gc3BlY2lmeSBvciBpbXBvcnQgdGhlaXIgbmFtZXNwYWNlcykuIERlZmF1bHQgaXMgYHt9YAotIGBnZW5lcmF0ZU9wZXJhdGlvbkhlYWRlcnNgIC0gYSBib29sZWFuIGluZGljYXRpbmcgd2hldGhlciB0byB1c2Ugb3BlcmF0aW9uIGhlYWRlcnMgaW4gdGhlIGdlbmVyYXRlZCBtZXRob2RzLiBEZWZhdWx0IGlzIGB0cnVlYAotIGB0eXBlQWNjZXNzaWJpbGl0eWAgLSB0aGUgZ2VuZXJhdGVkIHR5cGUgYWNjZXNzaWJpbGl0eS4gUG9zc2libGUgdmFsdWVzIGFyZSBgUHVibGljYCBhbmQgYEludGVybmFsYC4gRGVmYXVsdCBpcyBgUHVibGljYAotIGB1c2VDYW5jZWxsYXRpb25Ub2tlbnNgIC0gVXNlIGNhbmNlbGxhdGlvbiB0b2tlbnMgaW4gdGhlIGdlbmVyYXRlZCBtZXRob2RzLiBEZWZhdWx0IGlzIGBmYWxzZWAKLSBgdXNlSXNvRGF0ZUZvcm1hdGAgLSBTZXQgdG8gYHRydWVgIHRvIGV4cGxpY2l0bHkgZm9ybWF0IGRhdGUgcXVlcnkgc3RyaW5nIHBhcmFtZXRlcnMgaW4gSVNPIDg2MDEgc3RhbmRhcmQgZGF0ZSBmb3JtYXQgdXNpbmcgZGVsaW1pdGVycyAoZm9yIGV4YW1wbGU6IDIwMjMtMDYtMTUpLiBEZWZhdWx0IGlzIGBmYWxzZWAKLSBgbXVsdGlwbGVJbnRlcmZhY2VzYCAtIFNldCB0byBgQnlFbmRwb2ludGAgdG8gZ2VuZXJhdGUgYW4gaW50ZXJmYWNlIGZvciBlYWNoIGVuZHBvaW50LCBvciBgQnlUYWdgIHRvIGdyb3VwIEVuZHBvaW50cyBieSB0aGVpciBUYWcgKGxpa2UgU3dhZ2dlclVJIGdyb3VwcyB0aGVtKS4KLSBgb3V0cHV0Rm9sZGVyYCAtIGEgc3RyaW5nIGRlc2NyaWJpbmcgYSByZWxhdGl2ZSBwYXRoIHRvIGEgZGVzaXJlZCBvdXRwdXQgZm9sZGVyLiBEZWZhdWx0IGlzIGAuL0dlbmVyYXRlZGAKLSBgb3V0cHV0RmlsZW5hbWVgIC0gT3V0cHV0IGZpbGVuYW1lLiBEZWZhdWx0IGlzIGBPdXRwdXQuY3NgIHdoZW4gdXNlZCBmcm9tIHRoZSBDTEkgdG9vbCwgb3RoZXJ3aXNlIGl0cyB0aGUgLnJlZml0dGVyIGZpbGVuYW1lLiBTbyBgUGV0c3RvcmUucmVmaXR0ZXJgIGJlY29tZXMgYFBldHN0b3JlLmNzYC4KLSBgYWRkaXRpb25hbE5hbWVzcGFjZXNgIC0gQSBjb2xsZWN0aW9uIG9mIGFkZGl0aW9uYWwgbmFtZXNwYWNlcyB0byBpbmNsdWRlIGluIHRoZSBnZW5lcmF0ZWQgZmlsZS4gQSB1c2UgY2FzZSBmb3IgdGhpcyBpcyB3aGVuIHlvdSB3YW50IHRvIHJldXNlIGNvbnRyYWN0cyBmcm9tIGEgZGlmZmVyZW50IG5hbWVzcGFjZSB0aGFuIHRoZSBnZW5lcmF0ZWQgY29kZS4gRGVmYXVsdCBpcyBlbXB0eQotIGBpbmNsdWRlVGFnc2AgLSBBIGNvbGxlY3Rpb24gb2YgdGFncyB0byB1c2UgYSBmaWx0ZXIgZm9yIGluY2x1ZGluZyBlbmRwb2ludHMgdGhhdCBjb250YWluIHRoaXMgdGFnLgotIGBpbmNsdWRlUGF0aE1hdGNoZXNgIC0gQSBjb2xsZWN0aW9uIG9mIHJlZ3VsYXIgZXhwcmVzc2lvbnMgdXNlZCB0byBmaWx0ZXIgcGF0aHMuCi0gYGdlbmVyYXRlRGVwcmVjYXRlZE9wZXJhdGlvbnNgIC0gYSBib29sZWFuIGluZGljYXRpbmcgd2hldGhlciBkZXByZWNhdGVkIG9wZXJhdGlvbnMgc2hvdWxkIGJlIGdlbmVyYXRlZCBvciBza2lwcGVkLiBEZWZhdWx0IGlzIGB0cnVlYAotIGBvcGVyYXRpb25OYW1lVGVtcGxhdGVgIC0gR2VuZXJhdGUgb3BlcmF0aW9uIG5hbWVzIHVzaW5nIHBhdHRlcm4uIFRoaXMgbXVzdCBjb250YWluIHRoZSBzdHJpbmcge29wZXJhdGlvbk5hbWV9LiBBbiBleGFtcGxlIHVzYWdlIG9mIHRoaXMgY291bGQgYmUgYHtvcGVyYXRpb25OYW1lfUFzeW5jYCB0byBzdWZmaXggYWxsIG1ldGhvZCBuYW1lcyB3aXRoIEFzeW5jCi0gYG9wdGlvbmFsUGFyYW1ldGVyc2AgLSBHZW5lcmF0ZSBub24tcmVxdWlyZWQgcGFyYW1ldGVycyBhcyBudWxsYWJsZSBvcHRpb25hbCBwYXJhbWV0ZXJzCi0gYHRyaW1VbnVzZWRTY2hlbWFgIC0gUmVtb3ZlcyB1bnJlZmVyZW5jZWQgY29tcG9uZW50cyBzY2hlbWEgdG8ga2VlcCB0aGUgZ2VuZXJhdGVkIG91dHB1dCB0byBhIG1pbmltdW0KLSBga2VlcFNjaGVtYVBhdHRlcm5zYDogQSBjb2xsZWN0aW9uIG9mIHJlZ3VsYXIgZXhwcmVzc2lvbnMgdG8gZm9yY2UgdG8ga2VlcCBtYXRjaGluZyBzY2hlbWEuIFRoaXMgaXMgdXNlZCB0b2dldGhlciB3aXRoIGB0cmltVW51c2VkU2NoZW1hYAotIGBnZW5lcmF0ZURlZmF1bHRBZGRpdGlvbmFsUHJvcGVydGllc2A6IFNldCB0byBgZmFsc2VgIHRvIHNraXAgZGVmYXVsdCBhZGRpdGlvbmFsIHByb3BlcnRpZXMuIERlZmF1bHQgaXMgYHRydWVgCi0gYG9wZXJhdGlvbk5hbWVHZW5lcmF0b3JgOiBUaGUgTlN3YWcgYElPcGVyYXRpb25OYW1lR2VuZXJhdG9yYCBpbXBsZW1lbnRhdGlvbiB0byB1c2UuIFNlZSBodHRwczovL3JlZml0dGVyLmdpdGh1Yi5pby9hcGkvUmVmaXR0ZXIuQ29yZS5PcGVyYXRpb25OYW1lR2VuZXJhdG9yVHlwZXMuaHRtbAotIGBpbW11dGFibGVSZWNvcmRzYDogU2V0IHRvIGB0cnVlYCB0byBnZW5lcmF0ZSBjb250cmFjdHMgYXMgaW1tdXRhYmxlIHJlY29yZHMgaW5zdGVhZCBvZiBjbGFzc2VzLiBEZWZhdWx0IGlzIGBmYWxzZWAKLSBgZGVwZW5kZW5jeUluamVjdGlvblNldHRpbmdzYCAtIFNldHRpbmcgdGhpcyB3aWxsIGdlbmVyYXRlZCBleHRlbnNpb24gbWV0aG9kcyB0byBgSVNlcnZpY2VDb2xsZWN0aW9uYCBmb3IgY29uZmlndXJpbmcgUmVmaXQgY2xpZW50cwogIC0gYGJhc2VVcmxgIC0gVXNlZCBhcyB0aGUgSHR0cENsaWVudCBiYXNlIGFkZHJlc3MuIExlYXZlIHRoaXMgYmxhbmsgdG8gbWFudWFsbHkgc2V0IHRoZSBiYXNlIFVSTAogIC0gYGh0dHBNZXNzYWdlSGFuZGxlcnNgIC0gQSBjb2xsZWN0aW9uIG9mIGBIdHRwTWVzc2FnZUhhbmRsZXJgIHRoYXQgaXMgYWRkZWQgdG8gdGhlIEh0dHBDbGllbnQgcGlwZWxpbmUKICAtIGB1c2VQb2xseWAgLSAoREVQUkVDQVRFRCkgU2V0IHRoaXMgdG8gdHJ1ZSB0byBjb25maWd1cmUgdGhlIEh0dHBDbGllbnQgdG8gdXNlIFBvbGx5IHVzaW5nIGEgcmV0cnkgcG9saWN5IHdpdGggYSBqaXR0ZXJlZCBiYWNrb2ZmCiAgLSBgdHJhbnNpZW50RXJyb3JIYW5kbGVyYDogU2V0IHRoaXMgdG8gY29uZmlndXJlIHRyYW5zaWVudCBlcnJvciBoYW5kbGluZyB3aXRoIGEgcmV0cnkgcG9saWN5IHRoYXQgdXNlcyBhIGppdHRlcmVkIGJhY2tvZmYuIFNlZSBodHRwczovL3JlZml0dGVyLmdpdGh1Yi5pby9hcGkvUmVmaXR0ZXIuQ29yZS5UcmFuc2llbnRFcnJvckhhbmRsZXIuaHRtbAogIC0gYGZpcnN0QmFja29mZlJldHJ5SW5TZWNvbmRzYCAtIFRoaXMgaXMgdGhlIGR1cmF0aW9uIG9mIHRoZSBpbml0aWFsIHJldHJ5IGJhY2tvZmYuIERlZmF1bHQgaXMgMSBzZWNvbmQKLSBgY29kZUdlbmVyYXRvclNldHRpbmdzYCAtIFNldHRpbmcgdGhpcyBhbGxvd3MgY3VzdG9taXphdGlvbiBvZiB0aGUgTlN3YWcgZ2VuZXJhdGVkIHR5cGVzIGFuZCBjb250cmFjdHMKICAtIGByZXF1aXJlZFByb3BlcnRpZXNNdXN0QmVEZWZpbmVkYCAtIERlZmF1bHQgaXMgdHJ1ZSwKICAtIGBnZW5lcmF0ZURhdGFBbm5vdGF0aW9uc2AgLSBEZWZhdWx0IGlzIHRydWUsCiAgLSBgYW55VHlwZWAgLSBEZWZhdWx0IGlzIGBvYmplY3RgLAogIC0gYGRhdGVUeXBlYCAtIERlZmF1bHQgaXMgYFN5c3RlbS5EYXRlVGltZU9mZnNldGAsCiAgLSBgZGF0ZVRpbWVUeXBlYCAtIERlZmF1bHQgaXMgYFN5c3RlbS5EYXRlVGltZU9mZnNldGAsCiAgLSBgdGltZVR5cGVgIC0gRGVmYXVsdCBpcyBgU3lzdGVtLlRpbWVTcGFuYCwKICAtIGB0aW1lU3BhblR5cGVgIC0gRGVmYXVsdCBpcyBgU3lzdGVtLlRpbWVTcGFuYCwKICAtIGBhcnJheVR5cGVgIC0gRGVmYXVsdCBpcyBgU3lzdGVtLkNvbGxlY3Rpb25zLkdlbmVyaWMuSUNvbGxlY3Rpb25gLAogIC0gYGRpY3Rpb25hcnlUeXBlYCAtIERlZmF1bHQgaXMgYFN5c3RlbS5Db2xsZWN0aW9ucy5HZW5lcmljLklEaWN0aW9uYXJ5YCwKICAtIGBhcnJheUluc3RhbmNlVHlwZWAgLSBEZWZhdWx0IGlzIGBTeXN0ZW0uQ29sbGVjdGlvbnMuT2JqZWN0TW9kZWwuQ29sbGVjdGlvbmAsCiAgLSBgZGljdGlvbmFyeUluc3RhbmNlVHlwZWAgLSBEZWZhdWx0IGlzIGBTeXN0ZW0uQ29sbGVjdGlvbnMuR2VuZXJpYy5EaWN0aW9uYXJ5YCwKICAtIGBhcnJheUJhc2VUeXBlYCAtIERlZmF1bHQgaXMgYFN5c3RlbS5Db2xsZWN0aW9ucy5PYmplY3RNb2RlbC5Db2xsZWN0aW9uYCwKICAtIGBkaWN0aW9uYXJ5QmFzZVR5cGVgIC0gRGVmYXVsdCBpcyBgU3lzdGVtLkNvbGxlY3Rpb25zLkdlbmVyaWMuRGljdGlvbmFyeWAsCiAgLSBgcHJvcGVydHlTZXR0ZXJBY2Nlc3NNb2RpZmllcmAgLSBEZWZhdWx0IGlzIGBgLAogIC0gYGdlbmVyYXRlSW1tdXRhYmxlQXJyYXlQcm9wZXJ0aWVzYCAtIERlZmF1bHQgaXMgZmFsc2UsCiAgLSBgZ2VuZXJhdGVJbW11dGFibGVEaWN0aW9uYXJ5UHJvcGVydGllc2AgLSBEZWZhdWx0IGlzIGZhbHNlLAogIC0gYGhhbmRsZVJlZmVyZW5jZXNgIC0gRGVmYXVsdCBpcyBmYWxzZSwKICAtIGBqc29uU2VyaWFsaXplclNldHRpbmdzVHJhbnNmb3JtYXRpb25NZXRob2RgIC0gRGVmYXVsdCBpcyBudWxsLAogIC0gYGdlbmVyYXRlSnNvbk1ldGhvZHNgIC0gRGVmYXVsdCBpcyBmYWxzZSwKICAtIGBlbmZvcmNlRmxhZ0VudW1zYCAtIERlZmF1bHQgaXMgZmFsc2UsCiAgLSBgaW5saW5lTmFtZWREaWN0aW9uYXJpZXNgIC0gRGVmYXVsdCBpcyBmYWxzZSwKICAtIGBpbmxpbmVOYW1lZFR1cGxlc2AgLSBEZWZhdWx0IGlzIHRydWUsCiAgLSBgaW5saW5lTmFtZWRBcnJheXNgIC0gRGVmYXVsdCBpcyBmYWxzZSwKICAtIGBnZW5lcmF0ZU9wdGlvbmFsUHJvcGVydGllc0FzTnVsbGFibGVgIC0gRGVmYXVsdCBpcyBmYWxzZSwKICAtIGBnZW5lcmF0ZU51bGxhYmxlUmVmZXJlbmNlVHlwZXNgIC0gRGVmYXVsdCBpcyBmYWxzZSwKICAtIGBnZW5lcmF0ZU5hdGl2ZVJlY29yZHNgIC0gRGVmYXVsdCBpcyBmYWxzZQogIC0gYGdlbmVyYXRlRGVmYXVsdFZhbHVlc2AgLSBEZWZhdWx0IGlzIHRydWUKICAtIGBpbmxpbmVOYW1lZEFueWAgLSBEZWZhdWx0IGlzIGZhbHNlCiAgLSBgZXhjbHVkZWRUeXBlTmFtZXNgIC0gRGVmYXVsdCBpcyBlbXB0eQoKCiMgVXNpbmcgdGhlIGdlbmVyYXRlZCBjb2RlCgpIZXJlJ3MgYW4gZXhhbXBsZSBnZW5lcmF0ZWQgb3V0cHV0IGZyb20gdGhlIFtTd2FnZ2VyIFBldHN0b3JlIGV4YW1wbGVdKGh0dHBzOi8vcGV0c3RvcmUzLnN3YWdnZXIuaW8pIHVzaW5nIHRoZSBkZWZhdWx0IHNldHRpbmdzCgoqKkNMSSBUb29sKioKCmBgYGJhc2gKJCByZWZpdHRlciAuL29wZW5hcGkuanNvbiAtLW5hbWVzcGFjZSAiWW91ci5OYW1lc3BhY2UuT2YuQ2hvaWNlLkdlbmVyYXRlZENvZGUiCmBgYAoKKipTb3VyY2UgR2VuZXJhdG9yICoqKi5yZWZpdHRlcioqKiBmaWxlKioKCmBgYGpzb24KewogICJvcGVuQXBpUGF0aCI6ICIuL29wZW5hcGkuanNvbiIsCiAgIm5hbWVzcGFjZSI6ICJZb3VyLk5hbWVzcGFjZS5PZi5DaG9pY2UuR2VuZXJhdGVkQ29kZSIKfQpgYGAKCioqT3V0cHV0KioKCmBgYGNzCnVzaW5nIFJlZml0Owp1c2luZyBTeXN0ZW0uQ29sbGVjdGlvbnMuR2VuZXJpYzsKdXNpbmcgU3lzdGVtLlRleHQuSnNvbi5TZXJpYWxpemF0aW9uOwp1c2luZyBTeXN0ZW0uVGhyZWFkaW5nLlRhc2tzOwoKbmFtZXNwYWNlIFlvdXIuTmFtZXNwYWNlLk9mLkNob2ljZS5HZW5lcmF0ZWRDb2RlCnsKICAgIFtTeXN0ZW0uQ29kZURvbS5Db21waWxlci5HZW5lcmF0ZWRDb2RlKCJSZWZpdHRlciIsICIxLjAuMC4wIildCiAgICBwdWJsaWMgcGFydGlhbCBpbnRlcmZhY2UgSVN3YWdnZXJQZXRzdG9yZQogICAgewogICAgICAgIC8vLyA8c3VtbWFyeT5VcGRhdGUgYW4gZXhpc3RpbmcgcGV0PC9zdW1tYXJ5PgogICAgICAgIC8vLyA8cmVtYXJrcz5VcGRhdGUgYW4gZXhpc3RpbmcgcGV0IGJ5IElkPC9yZW1hcmtzPgogICAgICAgIC8vLyA8cGFyYW0gbmFtZT0iYm9keSI+VXBkYXRlIGFuIGV4aXN0ZW50IHBldCBpbiB0aGUgc3RvcmU8L3BhcmFtPgogICAgICAgIC8vLyA8cmV0dXJucz5TdWNjZXNzZnVsIG9wZXJhdGlvbjwvcmV0dXJucz4KICAgICAgICAvLy8gPGV4Y2VwdGlvbiBjcmVmPSJBcGlFeGNlcHRpb24iPgogICAgICAgIC8vLyBUaHJvd24gd2hlbiB0aGUgcmVxdWVzdCByZXR1cm5zIGEgbm9uLXN1Y2Nlc3Mgc3RhdHVzIGNvZGU6CiAgICAgICAgLy8vIDxsaXN0IHR5cGU9InRhYmxlIj4KICAgICAgICAvLy8gPGxpc3RoZWFkZXI+CiAgICAgICAgLy8vIDx0ZXJtPlN0YXR1czwvdGVybT4KICAgICAgICAvLy8gPGRlc2NyaXB0aW9uPkRlc2NyaXB0aW9uPC9kZXNjcmlwdGlvbj4KICAgICAgICAvLy8gPC9saXN0aGVhZGVyPgogICAgICAgIC8vLyA8aXRlbT4KICAgICAgICAvLy8gPHRlcm0+NDAwPC90ZXJtPgogICAgICAgIC8vLyA8ZGVzY3JpcHRpb24+SW52YWxpZCBJRCBzdXBwbGllZDwvZGVzY3JpcHRpb24+CiAgICAgICAgLy8vIDwvaXRlbT4KICAgICAgICAvLy8gPGl0ZW0+CiAgICAgICAgLy8vIDx0ZXJtPjQwNDwvdGVybT4KICAgICAgICAvLy8gPGRlc2NyaXB0aW9uPlBldCBub3QgZm91bmQ8L2Rlc2NyaXB0aW9uPgogICAgICAgIC8vLyA8L2l0ZW0+CiAgICAgICAgLy8vIDxpdGVtPgogICAgICAgIC8vLyA8dGVybT40MDU8L3Rlcm0+CiAgICAgICAgLy8vIDxkZXNjcmlwdGlvbj5WYWxpZGF0aW9uIGV4Y2VwdGlvbjwvZGVzY3JpcHRpb24+CiAgICAgICAgLy8vIDwvaXRlbT4KICAgICAgICAvLy8gPC9saXN0PgogICAgICAgIC8vLyA8L2V4Y2VwdGlvbj4KICAgICAgICBbSGVhZGVycygiQWNjZXB0OiBhcHBsaWNhdGlvbi94bWwsIGFwcGxpY2F0aW9uL2pzb24iKV0KICAgICAgICBbUHV0KCIvcGV0IildCiAgICAgICAgVGFzazxQZXQ+IFVwZGF0ZVBldChbQm9keV0gUGV0IGJvZHkpOwoKICAgICAgICAvLy8gPHN1bW1hcnk+QWRkIGEgbmV3IHBldCB0byB0aGUgc3RvcmU8L3N1bW1hcnk+CiAgICAgICAgLy8vIDxyZW1hcmtzPkFkZCBhIG5ldyBwZXQgdG8gdGhlIHN0b3JlPC9yZW1hcmtzPgogICAgICAgIC8vLyA8cGFyYW0gbmFtZT0iYm9keSI+Q3JlYXRlIGEgbmV3IHBldCBpbiB0aGUgc3RvcmU8L3BhcmFtPgogICAgICAgIC8vLyA8cmV0dXJucz5TdWNjZXNzZnVsIG9wZXJhdGlvbjwvcmV0dXJucz4KICAgICAgICAvLy8gPGV4Y2VwdGlvbiBjcmVmPSJBcGlFeGNlcHRpb24iPgogICAgICAgIC8vLyBUaHJvd24gd2hlbiB0aGUgcmVxdWVzdCByZXR1cm5zIGEgbm9uLXN1Y2Nlc3Mgc3RhdHVzIGNvZGU6CiAgICAgICAgLy8vIDxsaXN0IHR5cGU9InRhYmxlIj4KICAgICAgICAvLy8gPGxpc3RoZWFkZXI+CiAgICAgICAgLy8vIDx0ZXJtPlN0YXR1czwvdGVybT4KICAgICAgICAvLy8gPGRlc2NyaXB0aW9uPkRlc2NyaXB0aW9uPC9kZXNjcmlwdGlvbj4KICAgICAgICAvLy8gPC9saXN0aGVhZGVyPgogICAgICAgIC8vLyA8aXRlbT4KICAgICAgICAvLy8gPHRlcm0+NDA1PC90ZXJtPgogICAgICAgIC8vLyA8ZGVzY3JpcHRpb24+SW52YWxpZCBpbnB1dDwvZGVzY3JpcHRpb24+CiAgICAgICAgLy8vIDwvaXRlbT4KICAgICAgICAvLy8gPC9saXN0PgogICAgICAgIC8vLyA8L2V4Y2VwdGlvbj4KICAgICAgICBbSGVhZGVycygiQWNjZXB0OiBhcHBsaWNhdGlvbi94bWwsIGFwcGxpY2F0aW9uL2pzb24iKV0KICAgICAgICBbUG9zdCgiL3BldCIpXQogICAgICAgIFRhc2s8UGV0PiBBZGRQZXQoW0JvZHldIFBldCBib2R5KTsKCiAgICAgICAgLy8vIDxzdW1tYXJ5PkZpbmRzIFBldHMgYnkgc3RhdHVzPC9zdW1tYXJ5PgogICAgICAgIC8vLyA8cmVtYXJrcz5NdWx0aXBsZSBzdGF0dXMgdmFsdWVzIGNhbiBiZSBwcm92aWRlZCB3aXRoIGNvbW1hIHNlcGFyYXRlZCBzdHJpbmdzPC9yZW1hcmtzPgogICAgICAgIC8vLyA8cGFyYW0gbmFtZT0ic3RhdHVzIj5TdGF0dXMgdmFsdWVzIHRoYXQgbmVlZCB0byBiZSBjb25zaWRlcmVkIGZvciBmaWx0ZXI8L3BhcmFtPgogICAgICAgIC8vLyA8cmV0dXJucz5zdWNjZXNzZnVsIG9wZXJhdGlvbjwvcmV0dXJucz4KICAgICAgICAvLy8gPGV4Y2VwdGlvbiBjcmVmPSJBcGlFeGNlcHRpb24iPgogICAgICAgIC8vLyBUaHJvd24gd2hlbiB0aGUgcmVxdWVzdCByZXR1cm5zIGEgbm9uLXN1Y2Nlc3Mgc3RhdHVzIGNvZGU6CiAgICAgICAgLy8vIDxsaXN0IHR5cGU9InRhYmxlIj4KICAgICAgICAvLy8gPGxpc3RoZWFkZXI+CiAgICAgICAgLy8vIDx0ZXJtPlN0YXR1czwvdGVybT4KICAgICAgICAvLy8gPGRlc2NyaXB0aW9uPkRlc2NyaXB0aW9uPC9kZXNjcmlwdGlvbj4KICAgICAgICAvLy8gPC9saXN0aGVhZGVyPgogICAgICAgIC8vLyA8aXRlbT4KICAgICAgICAvLy8gPHRlcm0+NDAwPC90ZXJtPgogICAgICAgIC8vLyA8ZGVzY3JpcHRpb24+SW52YWxpZCBzdGF0dXMgdmFsdWU8L2Rlc2NyaXB0aW9uPgogICAgICAgIC8vLyA8L2l0ZW0+CiAgICAgICAgLy8vIDwvbGlzdD4KICAgICAgICAvLy8gPC9leGNlcHRpb24+CiAgICAgICAgW0hlYWRlcnMoIkFjY2VwdDogYXBwbGljYXRpb24vanNvbiIpXQogICAgICAgIFtHZXQoIi9wZXQvZmluZEJ5U3RhdHVzIildCiAgICAgICAgVGFzazxJQ29sbGVjdGlvbjxQZXQ+PiBGaW5kUGV0c0J5U3RhdHVzKFtRdWVyeV0gU3RhdHVzPyBzdGF0dXMpOwoKICAgICAgICAvLy8gPHN1bW1hcnk+RmluZHMgUGV0cyBieSB0YWdzPC9zdW1tYXJ5PgogICAgICAgIC8vLyA8cmVtYXJrcz5NdWx0aXBsZSB0YWdzIGNhbiBiZSBwcm92aWRlZCB3aXRoIGNvbW1hIHNlcGFyYXRlZCBzdHJpbmdzLiBVc2UgdGFnMSwgdGFnMiwgdGFnMyBmb3IgdGVzdGluZy48L3JlbWFya3M+CiAgICAgICAgLy8vIDxwYXJhbSBuYW1lPSJ0YWdzIj5UYWdzIHRvIGZpbHRlciBieTwvcGFyYW0+CiAgICAgICAgLy8vIDxyZXR1cm5zPnN1Y2Nlc3NmdWwgb3BlcmF0aW9uPC9yZXR1cm5zPgogICAgICAgIC8vLyA8ZXhjZXB0aW9uIGNyZWY9IkFwaUV4Y2VwdGlvbiI+CiAgICAgICAgLy8vIFRocm93biB3aGVuIHRoZSByZXF1ZXN0IHJldHVybnMgYSBub24tc3VjY2VzcyBzdGF0dXMgY29kZToKICAgICAgICAvLy8gPGxpc3QgdHlwZT0idGFibGUiPgogICAgICAgIC8vLyA8bGlzdGhlYWRlcj4KICAgICAgICAvLy8gPHRlcm0+U3RhdHVzPC90ZXJtPgogICAgICAgIC8vLyA8ZGVzY3JpcHRpb24+RGVzY3JpcHRpb248L2Rlc2NyaXB0aW9uPgogICAgICAgIC8vLyA8L2xpc3RoZWFkZXI+CiAgICAgICAgLy8vIDxpdGVtPgogICAgICAgIC8vLyA8dGVybT40MDA8L3Rlcm0+CiAgICAgICAgLy8vIDxkZXNjcmlwdGlvbj5JbnZhbGlkIHRhZyB2YWx1ZTwvZGVzY3JpcHRpb24+CiAgICAgICAgLy8vIDwvaXRlbT4KICAgICAgICAvLy8gPC9saXN0PgogICAgICAgIC8vLyA8L2V4Y2VwdGlvbj4KICAgICAgICBbSGVhZGVycygiQWNjZXB0OiBhcHBsaWNhdGlvbi9qc29uIildCiAgICAgICAgW0dldCgiL3BldC9maW5kQnlUYWdzIildCiAgICAgICAgVGFzazxJQ29sbGVjdGlvbjxQZXQ+PiBGaW5kUGV0c0J5VGFncyhbUXVlcnkoQ29sbGVjdGlvbkZvcm1hdC5NdWx0aSldIElFbnVtZXJhYmxlPHN0cmluZz4gdGFncyk7CgogICAgICAgIC8vLyA8c3VtbWFyeT5GaW5kIHBldCBieSBJRDwvc3VtbWFyeT4KICAgICAgICAvLy8gPHJlbWFya3M+UmV0dXJucyBhIHNpbmdsZSBwZXQ8L3JlbWFya3M+CiAgICAgICAgLy8vIDxwYXJhbSBuYW1lPSJwZXRJZCI+SUQgb2YgcGV0IHRvIHJldHVybjwvcGFyYW0+CiAgICAgICAgLy8vIDxyZXR1cm5zPnN1Y2Nlc3NmdWwgb3BlcmF0aW9uPC9yZXR1cm5zPgogICAgICAgIC8vLyA8ZXhjZXB0aW9uIGNyZWY9IkFwaUV4Y2VwdGlvbiI+CiAgICAgICAgLy8vIFRocm93biB3aGVuIHRoZSByZXF1ZXN0IHJldHVybnMgYSBub24tc3VjY2VzcyBzdGF0dXMgY29kZToKICAgICAgICAvLy8gPGxpc3QgdHlwZT0idGFibGUiPgogICAgICAgIC8vLyA8bGlzdGhlYWRlcj4KICAgICAgICAvLy8gPHRlcm0+U3RhdHVzPC90ZXJtPgogICAgICAgIC8vLyA8ZGVzY3JpcHRpb24+RGVzY3JpcHRpb248L2Rlc2NyaXB0aW9uPgogICAgICAgIC8vLyA8L2xpc3RoZWFkZXI+CiAgICAgICAgLy8vIDxpdGVtPgogICAgICAgIC8vLyA8dGVybT40MDA8L3Rlcm0+CiAgICAgICAgLy8vIDxkZXNjcmlwdGlvbj5JbnZhbGlkIElEIHN1cHBsaWVkPC9kZXNjcmlwdGlvbj4KICAgICAgICAvLy8gPC9pdGVtPgogICAgICAgIC8vLyA8aXRlbT4KICAgICAgICAvLy8gPHRlcm0+NDA0PC90ZXJtPgogICAgICAgIC8vLyA8ZGVzY3JpcHRpb24+UGV0IG5vdCBmb3VuZDwvZGVzY3JpcHRpb24+CiAgICAgICAgLy8vIDwvaXRlbT4KICAgICAgICAvLy8gPC9saXN0PgogICAgICAgIC8vLyA8L2V4Y2VwdGlvbj4KICAgICAgICBbSGVhZGVycygiQWNjZXB0OiBhcHBsaWNhdGlvbi94bWwsIGFwcGxpY2F0aW9uL2pzb24iKV0KICAgICAgICBbR2V0KCIvcGV0L3twZXRJZH0iKV0KICAgICAgICBUYXNrPFBldD4gR2V0UGV0QnlJZChsb25nIHBldElkKTsKCiAgICAgICAgLy8vIDxzdW1tYXJ5PlVwZGF0ZXMgYSBwZXQgaW4gdGhlIHN0b3JlIHdpdGggZm9ybSBkYXRhPC9zdW1tYXJ5PgogICAgICAgIC8vLyA8cGFyYW0gbmFtZT0icGV0SWQiPklEIG9mIHBldCB0aGF0IG5lZWRzIHRvIGJlIHVwZGF0ZWQ8L3BhcmFtPgogICAgICAgIC8vLyA8cGFyYW0gbmFtZT0ibmFtZSI+TmFtZSBvZiBwZXQgdGhhdCBuZWVkcyB0byBiZSB1cGRhdGVkPC9wYXJhbT4KICAgICAgICAvLy8gPHBhcmFtIG5hbWU9InN0YXR1cyI+U3RhdHVzIG9mIHBldCB0aGF0IG5lZWRzIHRvIGJlIHVwZGF0ZWQ8L3BhcmFtPgogICAgICAgIC8vLyA8cmV0dXJucz5BIDxzZWUgY3JlZj0iVGFzayIvPiB0aGF0IGNvbXBsZXRlcyB3aGVuIHRoZSByZXF1ZXN0IGlzIGZpbmlzaGVkLjwvcmV0dXJucz4KICAgICAgICAvLy8gPGV4Y2VwdGlvbiBjcmVmPSJBcGlFeGNlcHRpb24iPgogICAgICAgIC8vLyBUaHJvd24gd2hlbiB0aGUgcmVxdWVzdCByZXR1cm5zIGEgbm9uLXN1Y2Nlc3Mgc3RhdHVzIGNvZGU6CiAgICAgICAgLy8vIDxsaXN0IHR5cGU9InRhYmxlIj4KICAgICAgICAvLy8gPGxpc3RoZWFkZXI+CiAgICAgICAgLy8vIDx0ZXJtPlN0YXR1czwvdGVybT4KICAgICAgICAvLy8gPGRlc2NyaXB0aW9uPkRlc2NyaXB0aW9uPC9kZXNjcmlwdGlvbj4KICAgICAgICAvLy8gPC9saXN0aGVhZGVyPgogICAgICAgIC8vLyA8aXRlbT4KICAgICAgICAvLy8gPHRlcm0+NDA1PC90ZXJtPgogICAgICAgIC8vLyA8ZGVzY3JpcHRpb24+SW52YWxpZCBpbnB1dDwvZGVzY3JpcHRpb24+CiAgICAgICAgLy8vIDwvaXRlbT4KICAgICAgICAvLy8gPC9saXN0PgogICAgICAgIC8vLyA8L2V4Y2VwdGlvbj4KICAgICAgICBbUG9zdCgiL3BldC97cGV0SWR9IildCiAgICAgICAgVGFzayBVcGRhdGVQZXRXaXRoRm9ybShsb25nIHBldElkLCBbUXVlcnldIHN0cmluZyBuYW1lLCBbUXVlcnldIHN0cmluZyBzdGF0dXMpOwoKICAgICAgICAvLy8gPHN1bW1hcnk+RGVsZXRlcyBhIHBldDwvc3VtbWFyeT4KICAgICAgICAvLy8gPHBhcmFtIG5hbWU9InBldElkIj5QZXQgaWQgdG8gZGVsZXRlPC9wYXJhbT4KICAgICAgICAvLy8gPHJldHVybnM+QSA8c2VlIGNyZWY9IlRhc2siLz4gdGhhdCBjb21wbGV0ZXMgd2hlbiB0aGUgcmVxdWVzdCBpcyBmaW5pc2hlZC48L3JldHVybnM+CiAgICAgICAgLy8vIDxleGNlcHRpb24gY3JlZj0iQXBpRXhjZXB0aW9uIj4KICAgICAgICAvLy8gVGhyb3duIHdoZW4gdGhlIHJlcXVlc3QgcmV0dXJucyBhIG5vbi1zdWNjZXNzIHN0YXR1cyBjb2RlOgogICAgICAgIC8vLyA8bGlzdCB0eXBlPSJ0YWJsZSI+CiAgICAgICAgLy8vIDxsaXN0aGVhZGVyPgogICAgICAgIC8vLyA8dGVybT5TdGF0dXM8L3Rlcm0+CiAgICAgICAgLy8vIDxkZXNjcmlwdGlvbj5EZXNjcmlwdGlvbjwvZGVzY3JpcHRpb24+CiAgICAgICAgLy8vIDwvbGlzdGhlYWRlcj4KICAgICAgICAvLy8gPGl0ZW0+CiAgICAgICAgLy8vIDx0ZXJtPjQwMDwvdGVybT4KICAgICAgICAvLy8gPGRlc2NyaXB0aW9uPkludmFsaWQgcGV0IHZhbHVlPC9kZXNjcmlwdGlvbj4KICAgICAgICAvLy8gPC9pdGVtPgogICAgICAgIC8vLyA8L2xpc3Q+CiAgICAgICAgLy8vIDwvZXhjZXB0aW9uPgogICAgICAgIFtEZWxldGUoIi9wZXQve3BldElkfSIpXQogICAgICAgIFRhc2sgRGVsZXRlUGV0KGxvbmcgcGV0SWQsIFtIZWFkZXIoImFwaV9rZXkiKV0gc3RyaW5nIGFwaV9rZXkpOwoKICAgICAgICAvLy8gPHN1bW1hcnk+dXBsb2FkcyBhbiBpbWFnZTwvc3VtbWFyeT4KICAgICAgICAvLy8gPHBhcmFtIG5hbWU9InBldElkIj5JRCBvZiBwZXQgdG8gdXBkYXRlPC9wYXJhbT4KICAgICAgICAvLy8gPHBhcmFtIG5hbWU9ImFkZGl0aW9uYWxNZXRhZGF0YSI+QWRkaXRpb25hbCBNZXRhZGF0YTwvcGFyYW0+CiAgICAgICAgLy8vIDxyZXR1cm5zPgogICAgICAgIC8vLyBBIDxzZWUgY3JlZj0iVGFzayIvPiByZXByZXNlbnRpbmcgdGhlIDxzZWUgY3JlZj0iSUFwaVJlc3BvbnNlIi8+IGluc3RhbmNlIGNvbnRhaW5pbmcgdGhlIHJlc3VsdDoKICAgICAgICAvLy8gPGxpc3QgdHlwZT0idGFibGUiPgogICAgICAgIC8vLyA8bGlzdGhlYWRlcj4KICAgICAgICAvLy8gPHRlcm0+U3RhdHVzPC90ZXJtPgogICAgICAgIC8vLyA8ZGVzY3JpcHRpb24+RGVzY3JpcHRpb248L2Rlc2NyaXB0aW9uPgogICAgICAgIC8vLyA8L2xpc3RoZWFkZXI+CiAgICAgICAgLy8vIDxpdGVtPgogICAgICAgIC8vLyA8dGVybT4yMDA8L3Rlcm0+CiAgICAgICAgLy8vIDxkZXNjcmlwdGlvbj5zdWNjZXNzZnVsIG9wZXJhdGlvbjwvZGVzY3JpcHRpb24+CiAgICAgICAgLy8vIDwvaXRlbT4KICAgICAgICAvLy8gPC9saXN0PgogICAgICAgIC8vLyA8L3JldHVybnM+CiAgICAgICAgW0hlYWRlcnMoIkFjY2VwdDogYXBwbGljYXRpb24vanNvbiIpXQogICAgICAgIFtQb3N0KCIvcGV0L3twZXRJZH0vdXBsb2FkSW1hZ2UiKV0KICAgICAgICBUYXNrPEFwaVJlc3BvbnNlPiBVcGxvYWRGaWxlKGxvbmcgcGV0SWQsIFtRdWVyeV0gc3RyaW5nIGFkZGl0aW9uYWxNZXRhZGF0YSwgIFN0cmVhbVBhcnQgYm9keSk7CgogICAgICAgIC8vLyA8c3VtbWFyeT5SZXR1cm5zIHBldCBpbnZlbnRvcmllcyBieSBzdGF0dXM8L3N1bW1hcnk+CiAgICAgICAgLy8vIDxyZW1hcmtzPlJldHVybnMgYSBtYXAgb2Ygc3RhdHVzIGNvZGVzIHRvIHF1YW50aXRpZXM8L3JlbWFya3M+CiAgICAgICAgLy8vIDxyZXR1cm5zPnN1Y2Nlc3NmdWwgb3BlcmF0aW9uPC9yZXR1cm5zPgogICAgICAgIC8vLyA8ZXhjZXB0aW9uIGNyZWY9IkFwaUV4Y2VwdGlvbiI+VGhyb3duIHdoZW4gdGhlIHJlcXVlc3QgcmV0dXJucyBhIG5vbi1zdWNjZXNzIHN0YXR1cyBjb2RlLjwvZXhjZXB0aW9uPgogICAgICAgIFtIZWFkZXJzKCJBY2NlcHQ6IGFwcGxpY2F0aW9uL2pzb24iKV0KICAgICAgICBbR2V0KCIvc3RvcmUvaW52ZW50b3J5IildCiAgICAgICAgVGFzazxJRGljdGlvbmFyeTxzdHJpbmcsIGludD4+IEdldEludmVudG9yeSgpOwoKICAgICAgICAvLy8gPHN1bW1hcnk+UGxhY2UgYW4gb3JkZXIgZm9yIGEgcGV0PC9zdW1tYXJ5PgogICAgICAgIC8vLyA8cmVtYXJrcz5QbGFjZSBhIG5ldyBvcmRlciBpbiB0aGUgc3RvcmU8L3JlbWFya3M+CiAgICAgICAgLy8vIDxyZXR1cm5zPnN1Y2Nlc3NmdWwgb3BlcmF0aW9uPC9yZXR1cm5zPgogICAgICAgIC8vLyA8ZXhjZXB0aW9uIGNyZWY9IkFwaUV4Y2VwdGlvbiI+CiAgICAgICAgLy8vIFRocm93biB3aGVuIHRoZSByZXF1ZXN0IHJldHVybnMgYSBub24tc3VjY2VzcyBzdGF0dXMgY29kZToKICAgICAgICAvLy8gPGxpc3QgdHlwZT0idGFibGUiPgogICAgICAgIC8vLyA8bGlzdGhlYWRlcj4KICAgICAgICAvLy8gPHRlcm0+U3RhdHVzPC90ZXJtPgogICAgICAgIC8vLyA8ZGVzY3JpcHRpb24+RGVzY3JpcHRpb248L2Rlc2NyaXB0aW9uPgogICAgICAgIC8vLyA8L2xpc3RoZWFkZXI+CiAgICAgICAgLy8vIDxpdGVtPgogICAgICAgIC8vLyA8dGVybT40MDU8L3Rlcm0+CiAgICAgICAgLy8vIDxkZXNjcmlwdGlvbj5JbnZhbGlkIGlucHV0PC9kZXNjcmlwdGlvbj4KICAgICAgICAvLy8gPC9pdGVtPgogICAgICAgIC8vLyA8L2xpc3Q+CiAgICAgICAgLy8vIDwvZXhjZXB0aW9uPgogICAgICAgIFtIZWFkZXJzKCJBY2NlcHQ6IGFwcGxpY2F0aW9uL2pzb24iKV0KICAgICAgICBbUG9zdCgiL3N0b3JlL29yZGVyIildCiAgICAgICAgVGFzazxPcmRlcj4gUGxhY2VPcmRlcihbQm9keV0gT3JkZXIgYm9keSk7CgogICAgICAgIC8vLyA8c3VtbWFyeT5GaW5kIHB1cmNoYXNlIG9yZGVyIGJ5IElEPC9zdW1tYXJ5PgogICAgICAgIC8vLyA8cmVtYXJrcz5Gb3IgdmFsaWQgcmVzcG9uc2UgdHJ5IGludGVnZXIgSURzIHdpdGggdmFsdWUgPD0gNSBvciA+IDEwLiBPdGhlciB2YWx1ZXMgd2lsbCBnZW5lcmF0ZWQgZXhjZXB0aW9uczwvcmVtYXJrcz4KICAgICAgICAvLy8gPHBhcmFtIG5hbWU9Im9yZGVySWQiPklEIG9mIG9yZGVyIHRoYXQgbmVlZHMgdG8gYmUgZmV0Y2hlZDwvcGFyYW0+CiAgICAgICAgLy8vIDxyZXR1cm5zPnN1Y2Nlc3NmdWwgb3BlcmF0aW9uPC9yZXR1cm5zPgogICAgICAgIC8vLyA8ZXhjZXB0aW9uIGNyZWY9IkFwaUV4Y2VwdGlvbiI+CiAgICAgICAgLy8vIFRocm93biB3aGVuIHRoZSByZXF1ZXN0IHJldHVybnMgYSBub24tc3VjY2VzcyBzdGF0dXMgY29kZToKICAgICAgICAvLy8gPGxpc3QgdHlwZT0idGFibGUiPgogICAgICAgIC8vLyA8bGlzdGhlYWRlcj4KICAgICAgICAvLy8gPHRlcm0+U3RhdHVzPC90ZXJtPgogICAgICAgIC8vLyA8ZGVzY3JpcHRpb24+RGVzY3JpcHRpb248L2Rlc2NyaXB0aW9uPgogICAgICAgIC8vLyA8L2xpc3RoZWFkZXI+CiAgICAgICAgLy8vIDxpdGVtPgogICAgICAgIC8vLyA8dGVybT40MDA8L3Rlcm0+CiAgICAgICAgLy8vIDxkZXNjcmlwdGlvbj5JbnZhbGlkIElEIHN1cHBsaWVkPC9kZXNjcmlwdGlvbj4KICAgICAgICAvLy8gPC9pdGVtPgogICAgICAgIC8vLyA8aXRlbT4KICAgICAgICAvLy8gPHRlcm0+NDA0PC90ZXJtPgogICAgICAgIC8vLyA8ZGVzY3JpcHRpb24+T3JkZXIgbm90IGZvdW5kPC9kZXNjcmlwdGlvbj4KICAgICAgICAvLy8gPC9pdGVtPgogICAgICAgIC8vLyA8L2xpc3Q+CiAgICAgICAgLy8vIDwvZXhjZXB0aW9uPgogICAgICAgIFtIZWFkZXJzKCJBY2NlcHQ6IGFwcGxpY2F0aW9uL2pzb24iKV0KICAgICAgICBbR2V0KCIvc3RvcmUvb3JkZXIve29yZGVySWR9IildCiAgICAgICAgVGFzazxPcmRlcj4gR2V0T3JkZXJCeUlkKGxvbmcgb3JkZXJJZCk7CgogICAgICAgIC8vLyA8c3VtbWFyeT5EZWxldGUgcHVyY2hhc2Ugb3JkZXIgYnkgSUQ8L3N1bW1hcnk+CiAgICAgICAgLy8vIDxyZW1hcmtzPkZvciB2YWxpZCByZXNwb25zZSB0cnkgaW50ZWdlciBJRHMgd2l0aCB2YWx1ZSA8IDEwMDAuIEFueXRoaW5nIGFib3ZlIDEwMDAgb3Igbm9uaW50ZWdlcnMgd2lsbCBnZW5lcmF0ZSBBUEkgZXJyb3JzPC9yZW1hcmtzPgogICAgICAgIC8vLyA8cGFyYW0gbmFtZT0ib3JkZXJJZCI+SUQgb2YgdGhlIG9yZGVyIHRoYXQgbmVlZHMgdG8gYmUgZGVsZXRlZDwvcGFyYW0+CiAgICAgICAgLy8vIDxyZXR1cm5zPkEgPHNlZSBjcmVmPSJUYXNrIi8+IHRoYXQgY29tcGxldGVzIHdoZW4gdGhlIHJlcXVlc3QgaXMgZmluaXNoZWQuPC9yZXR1cm5zPgogICAgICAgIC8vLyA8ZXhjZXB0aW9uIGNyZWY9IkFwaUV4Y2VwdGlvbiI+CiAgICAgICAgLy8vIFRocm93biB3aGVuIHRoZSByZXF1ZXN0IHJldHVybnMgYSBub24tc3VjY2VzcyBzdGF0dXMgY29kZToKICAgICAgICAvLy8gPGxpc3QgdHlwZT0idGFibGUiPgogICAgICAgIC8vLyA8bGlzdGhlYWRlcj4KICAgICAgICAvLy8gPHRlcm0+U3RhdHVzPC90ZXJtPgogICAgICAgIC8vLyA8ZGVzY3JpcHRpb24+RGVzY3JpcHRpb248L2Rlc2NyaXB0aW9uPgogICAgICAgIC8vLyA8L2xpc3RoZWFkZXI+CiAgICAgICAgLy8vIDxpdGVtPgogICAgICAgIC8vLyA8dGVybT40MDA8L3Rlcm0+CiAgICAgICAgLy8vIDxkZXNjcmlwdGlvbj5JbnZhbGlkIElEIHN1cHBsaWVkPC9kZXNjcmlwdGlvbj4KICAgICAgICAvLy8gPC9pdGVtPgogICAgICAgIC8vLyA8aXRlbT4KICAgICAgICAvLy8gPHRlcm0+NDA0PC90ZXJtPgogICAgICAgIC8vLyA8ZGVzY3JpcHRpb24+T3JkZXIgbm90IGZvdW5kPC9kZXNjcmlwdGlvbj4KICAgICAgICAvLy8gPC9pdGVtPgogICAgICAgIC8vLyA8L2xpc3Q+CiAgICAgICAgLy8vIDwvZXhjZXB0aW9uPgogICAgICAgIFtEZWxldGUoIi9zdG9yZS9vcmRlci97b3JkZXJJZH0iKV0KICAgICAgICBUYXNrIERlbGV0ZU9yZGVyKGxvbmcgb3JkZXJJZCk7CgogICAgICAgIC8vLyA8c3VtbWFyeT5DcmVhdGUgdXNlcjwvc3VtbWFyeT4KICAgICAgICAvLy8gPHJlbWFya3M+VGhpcyBjYW4gb25seSBiZSBkb25lIGJ5IHRoZSBsb2dnZWQgaW4gdXNlci48L3JlbWFya3M+CiAgICAgICAgLy8vIDxwYXJhbSBuYW1lPSJib2R5Ij5DcmVhdGVkIHVzZXIgb2JqZWN0PC9wYXJhbT4KICAgICAgICAvLy8gPHJldHVybnM+c3VjY2Vzc2Z1bCBvcGVyYXRpb248L3JldHVybnM+CiAgICAgICAgLy8vIDxleGNlcHRpb24gY3JlZj0iQXBpRXhjZXB0aW9uIj5UaHJvd24gd2hlbiB0aGUgcmVxdWVzdCByZXR1cm5zIGEgbm9uLXN1Y2Nlc3Mgc3RhdHVzIGNvZGUuPC9leGNlcHRpb24+CiAgICAgICAgW0hlYWRlcnMoIkFjY2VwdDogYXBwbGljYXRpb24vanNvbiwgYXBwbGljYXRpb24veG1sIildCiAgICAgICAgW1Bvc3QoIi91c2VyIildCiAgICAgICAgVGFzayBDcmVhdGVVc2VyKFtCb2R5XSBVc2VyIGJvZHkpOwoKICAgICAgICAvLy8gPHN1bW1hcnk+Q3JlYXRlcyBsaXN0IG9mIHVzZXJzIHdpdGggZ2l2ZW4gaW5wdXQgYXJyYXk8L3N1bW1hcnk+CiAgICAgICAgLy8vIDxyZW1hcmtzPkNyZWF0ZXMgbGlzdCBvZiB1c2VycyB3aXRoIGdpdmVuIGlucHV0IGFycmF5PC9yZW1hcmtzPgogICAgICAgIC8vLyA8cmV0dXJucz5TdWNjZXNzZnVsIG9wZXJhdGlvbjwvcmV0dXJucz4KICAgICAgICAvLy8gPGV4Y2VwdGlvbiBjcmVmPSJBcGlFeGNlcHRpb24iPlRocm93biB3aGVuIHRoZSByZXF1ZXN0IHJldHVybnMgYSBub24tc3VjY2VzcyBzdGF0dXMgY29kZS48L2V4Y2VwdGlvbj4KICAgICAgICBbSGVhZGVycygiQWNjZXB0OiBhcHBsaWNhdGlvbi94bWwsIGFwcGxpY2F0aW9uL2pzb24iKV0KICAgICAgICBbUG9zdCgiL3VzZXIvY3JlYXRlV2l0aExpc3QiKV0KICAgICAgICBUYXNrPFVzZXI+IENyZWF0ZVVzZXJzV2l0aExpc3RJbnB1dChbQm9keV0gSUVudW1lcmFibGU8VXNlcj4gYm9keSk7CgogICAgICAgIC8vLyA8c3VtbWFyeT5Mb2dzIHVzZXIgaW50byB0aGUgc3lzdGVtPC9zdW1tYXJ5PgogICAgICAgIC8vLyA8cGFyYW0gbmFtZT0idXNlcm5hbWUiPlRoZSB1c2VyIG5hbWUgZm9yIGxvZ2luPC9wYXJhbT4KICAgICAgICAvLy8gPHBhcmFtIG5hbWU9InBhc3N3b3JkIj5UaGUgcGFzc3dvcmQgZm9yIGxvZ2luIGluIGNsZWFyIHRleHQ8L3BhcmFtPgogICAgICAgIC8vLyA8cmV0dXJucz5zdWNjZXNzZnVsIG9wZXJhdGlvbjwvcmV0dXJucz4KICAgICAgICAvLy8gPGV4Y2VwdGlvbiBjcmVmPSJBcGlFeGNlcHRpb24iPgogICAgICAgIC8vLyBUaHJvd24gd2hlbiB0aGUgcmVxdWVzdCByZXR1cm5zIGEgbm9uLXN1Y2Nlc3Mgc3RhdHVzIGNvZGU6CiAgICAgICAgLy8vIDxsaXN0IHR5cGU9InRhYmxlIj4KICAgICAgICAvLy8gPGxpc3RoZWFkZXI+CiAgICAgICAgLy8vIDx0ZXJtPlN0YXR1czwvdGVybT4KICAgICAgICAvLy8gPGRlc2NyaXB0aW9uPkRlc2NyaXB0aW9uPC9kZXNjcmlwdGlvbj4KICAgICAgICAvLy8gPC9saXN0aGVhZGVyPgogICAgICAgIC8vLyA8aXRlbT4KICAgICAgICAvLy8gPHRlcm0+NDAwPC90ZXJtPgogICAgICAgIC8vLyA8ZGVzY3JpcHRpb24+SW52YWxpZCB1c2VybmFtZS9wYXNzd29yZCBzdXBwbGllZDwvZGVzY3JpcHRpb24+CiAgICAgICAgLy8vIDwvaXRlbT4KICAgICAgICAvLy8gPC9saXN0PgogICAgICAgIC8vLyA8L2V4Y2VwdGlvbj4KICAgICAgICBbSGVhZGVycygiQWNjZXB0OiBhcHBsaWNhdGlvbi9qc29uIildCiAgICAgICAgW0dldCgiL3VzZXIvbG9naW4iKV0KICAgICAgICBUYXNrPHN0cmluZz4gTG9naW5Vc2VyKFtRdWVyeV0gc3RyaW5nIHVzZXJuYW1lLCBbUXVlcnldIHN0cmluZyBwYXNzd29yZCk7CgogICAgICAgIC8vLyA8c3VtbWFyeT5Mb2dzIG91dCBjdXJyZW50IGxvZ2dlZCBpbiB1c2VyIHNlc3Npb248L3N1bW1hcnk+CiAgICAgICAgLy8vIDxyZXR1cm5zPkEgPHNlZSBjcmVmPSJUYXNrIi8+IHRoYXQgY29tcGxldGVzIHdoZW4gdGhlIHJlcXVlc3QgaXMgZmluaXNoZWQuPC9yZXR1cm5zPgogICAgICAgIC8vLyA8ZXhjZXB0aW9uIGNyZWY9IkFwaUV4Y2VwdGlvbiI+VGhyb3duIHdoZW4gdGhlIHJlcXVlc3QgcmV0dXJucyBhIG5vbi1zdWNjZXNzIHN0YXR1cyBjb2RlLjwvZXhjZXB0aW9uPgogICAgICAgIFtHZXQoIi91c2VyL2xvZ291dCIpXQogICAgICAgIFRhc2sgTG9nb3V0VXNlcigpOwoKICAgICAgICAvLy8gPHN1bW1hcnk+R2V0IHVzZXIgYnkgdXNlciBuYW1lPC9zdW1tYXJ5PgogICAgICAgIC8vLyA8cGFyYW0gbmFtZT0idXNlcm5hbWUiPlRoZSBuYW1lIHRoYXQgbmVlZHMgdG8gYmUgZmV0Y2hlZC4gVXNlIHVzZXIxIGZvciB0ZXN0aW5nLjwvcGFyYW0+CiAgICAgICAgLy8vIDxyZXR1cm5zPnN1Y2Nlc3NmdWwgb3BlcmF0aW9uPC9yZXR1cm5zPgogICAgICAgIC8vLyA8ZXhjZXB0aW9uIGNyZWY9IkFwaUV4Y2VwdGlvbiI+CiAgICAgICAgLy8vIFRocm93biB3aGVuIHRoZSByZXF1ZXN0IHJldHVybnMgYSBub24tc3VjY2VzcyBzdGF0dXMgY29kZToKICAgICAgICAvLy8gPGxpc3QgdHlwZT0idGFibGUiPgogICAgICAgIC8vLyA8bGlzdGhlYWRlcj4KICAgICAgICAvLy8gPHRlcm0+U3RhdHVzPC90ZXJtPgogICAgICAgIC8vLyA8ZGVzY3JpcHRpb24+RGVzY3JpcHRpb248L2Rlc2NyaXB0aW9uPgogICAgICAgIC8vLyA8L2xpc3RoZWFkZXI+CiAgICAgICAgLy8vIDxpdGVtPgogICAgICAgIC8vLyA8dGVybT40MDA8L3Rlcm0+CiAgICAgICAgLy8vIDxkZXNjcmlwdGlvbj5JbnZhbGlkIHVzZXJuYW1lIHN1cHBsaWVkPC9kZXNjcmlwdGlvbj4KICAgICAgICAvLy8gPC9pdGVtPgogICAgICAgIC8vLyA8aXRlbT4KICAgICAgICAvLy8gPHRlcm0+NDA0PC90ZXJtPgogICAgICAgIC8vLyA8ZGVzY3JpcHRpb24+VXNlciBub3QgZm91bmQ8L2Rlc2NyaXB0aW9uPgogICAgICAgIC8vLyA8L2l0ZW0+CiAgICAgICAgLy8vIDwvbGlzdD4KICAgICAgICAvLy8gPC9leGNlcHRpb24+CiAgICAgICAgW0hlYWRlcnMoIkFjY2VwdDogYXBwbGljYXRpb24vanNvbiIpXQogICAgICAgIFtHZXQoIi91c2VyL3t1c2VybmFtZX0iKV0KICAgICAgICBUYXNrPFVzZXI+IEdldFVzZXJCeU5hbWUoc3RyaW5nIHVzZXJuYW1lKTsKCiAgICAgICAgLy8vIDxzdW1tYXJ5PlVwZGF0ZSB1c2VyPC9zdW1tYXJ5PgogICAgICAgIC8vLyA8cmVtYXJrcz5UaGlzIGNhbiBvbmx5IGJlIGRvbmUgYnkgdGhlIGxvZ2dlZCBpbiB1c2VyLjwvcmVtYXJrcz4KICAgICAgICAvLy8gPHBhcmFtIG5hbWU9InVzZXJuYW1lIj5uYW1lIHRoYXQgbmVlZCB0byBiZSBkZWxldGVkPC9wYXJhbT4KICAgICAgICAvLy8gPHBhcmFtIG5hbWU9ImJvZHkiPlVwZGF0ZSBhbiBleGlzdGVudCB1c2VyIGluIHRoZSBzdG9yZTwvcGFyYW0+CiAgICAgICAgLy8vIDxyZXR1cm5zPkEgPHNlZSBjcmVmPSJUYXNrIi8+IHRoYXQgY29tcGxldGVzIHdoZW4gdGhlIHJlcXVlc3QgaXMgZmluaXNoZWQuPC9yZXR1cm5zPgogICAgICAgIC8vLyA8ZXhjZXB0aW9uIGNyZWY9IkFwaUV4Y2VwdGlvbiI+VGhyb3duIHdoZW4gdGhlIHJlcXVlc3QgcmV0dXJucyBhIG5vbi1zdWNjZXNzIHN0YXR1cyBjb2RlLjwvZXhjZXB0aW9uPgogICAgICAgIFtQdXQoIi91c2VyL3t1c2VybmFtZX0iKV0KICAgICAgICBUYXNrIFVwZGF0ZVVzZXIoc3RyaW5nIHVzZXJuYW1lLCBbQm9keV0gVXNlciBib2R5KTsKCiAgICAgICAgLy8vIDxzdW1tYXJ5PkRlbGV0ZSB1c2VyPC9zdW1tYXJ5PgogICAgICAgIC8vLyA8cmVtYXJrcz5UaGlzIGNhbiBvbmx5IGJlIGRvbmUgYnkgdGhlIGxvZ2dlZCBpbiB1c2VyLjwvcmVtYXJrcz4KICAgICAgICAvLy8gPHBhcmFtIG5hbWU9InVzZXJuYW1lIj5UaGUgbmFtZSB0aGF0IG5lZWRzIHRvIGJlIGRlbGV0ZWQ8L3BhcmFtPgogICAgICAgIC8vLyA8cmV0dXJucz5BIDxzZWUgY3JlZj0iVGFzayIvPiB0aGF0IGNvbXBsZXRlcyB3aGVuIHRoZSByZXF1ZXN0IGlzIGZpbmlzaGVkLjwvcmV0dXJucz4KICAgICAgICAvLy8gPGV4Y2VwdGlvbiBjcmVmPSJBcGlFeGNlcHRpb24iPgogICAgICAgIC8vLyBUaHJvd24gd2hlbiB0aGUgcmVxdWVzdCByZXR1cm5zIGEgbm9uLXN1Y2Nlc3Mgc3RhdHVzIGNvZGU6CiAgICAgICAgLy8vIDxsaXN0IHR5cGU9InRhYmxlIj4KICAgICAgICAvLy8gPGxpc3RoZWFkZXI+CiAgICAgICAgLy8vIDx0ZXJtPlN0YXR1czwvdGVybT4KICAgICAgICAvLy8gPGRlc2NyaXB0aW9uPkRlc2NyaXB0aW9uPC9kZXNjcmlwdGlvbj4KICAgICAgICAvLy8gPC9saXN0aGVhZGVyPgogICAgICAgIC8vLyA8aXRlbT4KICAgICAgICAvLy8gPHRlcm0+NDAwPC90ZXJtPgogICAgICAgIC8vLyA8ZGVzY3JpcHRpb24+SW52YWxpZCB1c2VybmFtZSBzdXBwbGllZDwvZGVzY3JpcHRpb24+CiAgICAgICAgLy8vIDwvaXRlbT4KICAgICAgICAvLy8gPGl0ZW0+CiAgICAgICAgLy8vIDx0ZXJtPjQwNDwvdGVybT4KICAgICAgICAvLy8gPGRlc2NyaXB0aW9uPlVzZXIgbm90IGZvdW5kPC9kZXNjcmlwdGlvbj4KICAgICAgICAvLy8gPC9pdGVtPgogICAgICAgIC8vLyA8L2xpc3Q+CiAgICAgICAgLy8vIDwvZXhjZXB0aW9uPgogICAgICAgIFtEZWxldGUoIi91c2VyL3t1c2VybmFtZX0iKV0KICAgICAgICBUYXNrIERlbGV0ZVVzZXIoc3RyaW5nIHVzZXJuYW1lKTsKICAgIH0KfQpgYGAKCkhlcmUncyBhbiBleGFtcGxlIGdlbmVyYXRlZCBvdXRwdXQgZnJvbSB0aGUgW1N3YWdnZXIgUGV0c3RvcmUgZXhhbXBsZV0oaHR0cHM6Ly9wZXRzdG9yZTMuc3dhZ2dlci5pbykgY29uZmlndXJlZCB0byB3cmFwIHRoZSByZXR1cm4gdHlwZSBpbiBgSUFwaVJlc3BvbnNlPFQ+YAoKKipDTEkgVG9vbCoqCgpgYGBiYXNoCiQgcmVmaXR0ZXIgLi9vcGVuYXBpLmpzb24gLS1uYW1lc3BhY2UgIllvdXIuTmFtZXNwYWNlLk9mLkNob2ljZS5HZW5lcmF0ZWRDb2RlIiAtLXVzZS1hcGktcmVzcG9uc2UKYGBgCgoqKlNvdXJjZSBHZW5lcmF0b3IgKioqLnJlZml0dGVyKioqIGZpbGUqKgoKYGBganNvbgp7CiAgIm9wZW5BcGlQYXRoIjogIi4vb3BlbmFwaS5qc29uIiwKICAibmFtZXNwYWNlIjogIllvdXIuTmFtZXNwYWNlLk9mLkNob2ljZS5HZW5lcmF0ZWRDb2RlIiwKICAicmV0dXJuSUFwaVJlc3BvbnNlIjogdHJ1ZQp9CmBgYAoKKipPdXRwdXQqKgoKYGBgY3MKdXNpbmcgUmVmaXQ7CnVzaW5nIFN5c3RlbS5Db2xsZWN0aW9ucy5HZW5lcmljOwp1c2luZyBTeXN0ZW0uVGV4dC5Kc29uLlNlcmlhbGl6YXRpb247CnVzaW5nIFN5c3RlbS5UaHJlYWRpbmcuVGFza3M7CgpuYW1lc3BhY2UgWW91ci5OYW1lc3BhY2UuT2YuQ2hvaWNlLkdlbmVyYXRlZENvZGUKewogICAgW1N5c3RlbS5Db2RlRG9tLkNvbXBpbGVyLkdlbmVyYXRlZENvZGUoIlJlZml0dGVyIiwgIjEuMC4wLjAiKV0KICAgIHB1YmxpYyBwYXJ0aWFsIGludGVyZmFjZSBJU3dhZ2dlclBldHN0b3JlCiAgICB7CiAgICAgICAgLy8vIDxzdW1tYXJ5PlVwZGF0ZSBhbiBleGlzdGluZyBwZXQ8L3N1bW1hcnk+CiAgICAgICAgLy8vIDxyZW1hcmtzPlVwZGF0ZSBhbiBleGlzdGluZyBwZXQgYnkgSWQ8L3JlbWFya3M+CiAgICAgICAgLy8vIDxwYXJhbSBuYW1lPSJib2R5Ij5VcGRhdGUgYW4gZXhpc3RlbnQgcGV0IGluIHRoZSBzdG9yZTwvcGFyYW0+CiAgICAgICAgLy8vIDxyZXR1cm5zPgogICAgICAgIC8vLyBBIDxzZWUgY3JlZj0iVGFzayIvPiByZXByZXNlbnRpbmcgdGhlIDxzZWUgY3JlZj0iSUFwaVJlc3BvbnNlIi8+IGluc3RhbmNlIGNvbnRhaW5pbmcgdGhlIHJlc3VsdDoKICAgICAgICAvLy8gPGxpc3QgdHlwZT0idGFibGUiPgogICAgICAgIC8vLyA8bGlzdGhlYWRlcj4KICAgICAgICAvLy8gPHRlcm0+U3RhdHVzPC90ZXJtPgogICAgICAgIC8vLyA8ZGVzY3JpcHRpb24+RGVzY3JpcHRpb248L2Rlc2NyaXB0aW9uPgogICAgICAgIC8vLyA8L2xpc3RoZWFkZXI+CiAgICAgICAgLy8vIDxpdGVtPgogICAgICAgIC8vLyA8dGVybT4yMDA8L3Rlcm0+CiAgICAgICAgLy8vIDxkZXNjcmlwdGlvbj5TdWNjZXNzZnVsIG9wZXJhdGlvbjwvZGVzY3JpcHRpb24+CiAgICAgICAgLy8vIDwvaXRlbT4KICAgICAgICAvLy8gPGl0ZW0+CiAgICAgICAgLy8vIDx0ZXJtPjQwMDwvdGVybT4KICAgICAgICAvLy8gPGRlc2NyaXB0aW9uPkludmFsaWQgSUQgc3VwcGxpZWQ8L2Rlc2NyaXB0aW9uPgogICAgICAgIC8vLyA8L2l0ZW0+CiAgICAgICAgLy8vIDxpdGVtPgogICAgICAgIC8vLyA8dGVybT40MDQ8L3Rlcm0+CiAgICAgICAgLy8vIDxkZXNjcmlwdGlvbj5QZXQgbm90IGZvdW5kPC9kZXNjcmlwdGlvbj4KICAgICAgICAvLy8gPC9pdGVtPgogICAgICAgIC8vLyA8aXRlbT4KICAgICAgICAvLy8gPHRlcm0+NDA1PC90ZXJtPgogICAgICAgIC8vLyA8ZGVzY3JpcHRpb24+VmFsaWRhdGlvbiBleGNlcHRpb248L2Rlc2NyaXB0aW9uPgogICAgICAgIC8vLyA8L2l0ZW0+CiAgICAgICAgLy8vIDwvbGlzdD4KICAgICAgICAvLy8gPC9yZXR1cm5zPgogICAgICAgIFtIZWFkZXJzKCJBY2NlcHQ6IGFwcGxpY2F0aW9uL3htbCwgYXBwbGljYXRpb24vanNvbiIpXQogICAgICAgIFtQdXQoIi9wZXQiKV0KICAgICAgICBUYXNrPElBcGlSZXNwb25zZTxQZXQ+PiBVcGRhdGVQZXQoW0JvZHldIFBldCBib2R5KTsKCiAgICAgICAgLy8vIDxzdW1tYXJ5PkFkZCBhIG5ldyBwZXQgdG8gdGhlIHN0b3JlPC9zdW1tYXJ5PgogICAgICAgIC8vLyA8cmVtYXJrcz5BZGQgYSBuZXcgcGV0IHRvIHRoZSBzdG9yZTwvcmVtYXJrcz4KICAgICAgICAvLy8gPHBhcmFtIG5hbWU9ImJvZHkiPkNyZWF0ZSBhIG5ldyBwZXQgaW4gdGhlIHN0b3JlPC9wYXJhbT4KICAgICAgICAvLy8gPHJldHVybnM+CiAgICAgICAgLy8vIEEgPHNlZSBjcmVmPSJUYXNrIi8+IHJlcHJlc2VudGluZyB0aGUgPHNlZSBjcmVmPSJJQXBpUmVzcG9uc2UiLz4gaW5zdGFuY2UgY29udGFpbmluZyB0aGUgcmVzdWx0OgogICAgICAgIC8vLyA8bGlzdCB0eXBlPSJ0YWJsZSI+CiAgICAgICAgLy8vIDxsaXN0aGVhZGVyPgogICAgICAgIC8vLyA8dGVybT5TdGF0dXM8L3Rlcm0+CiAgICAgICAgLy8vIDxkZXNjcmlwdGlvbj5EZXNjcmlwdGlvbjwvZGVzY3JpcHRpb24+CiAgICAgICAgLy8vIDwvbGlzdGhlYWRlcj4KICAgICAgICAvLy8gPGl0ZW0+CiAgICAgICAgLy8vIDx0ZXJtPjIwMDwvdGVybT4KICAgICAgICAvLy8gPGRlc2NyaXB0aW9uPlN1Y2Nlc3NmdWwgb3BlcmF0aW9uPC9kZXNjcmlwdGlvbj4KICAgICAgICAvLy8gPC9pdGVtPgogICAgICAgIC8vLyA8aXRlbT4KICAgICAgICAvLy8gPHRlcm0+NDA1PC90ZXJtPgogICAgICAgIC8vLyA8ZGVzY3JpcHRpb24+SW52YWxpZCBpbnB1dDwvZGVzY3JpcHRpb24+CiAgICAgICAgLy8vIDwvaXRlbT4KICAgICAgICAvLy8gPC9saXN0PgogICAgICAgIC8vLyA8L3JldHVybnM+CiAgICAgICAgW0hlYWRlcnMoIkFjY2VwdDogYXBwbGljYXRpb24veG1sLCBhcHBsaWNhdGlvbi9qc29uIildCiAgICAgICAgW1Bvc3QoIi9wZXQiKV0KICAgICAgICBUYXNrPElBcGlSZXNwb25zZTxQZXQ+PiBBZGRQZXQoW0JvZHldIFBldCBib2R5KTsKCiAgICAgICAgLy8vIDxzdW1tYXJ5PkZpbmRzIFBldHMgYnkgc3RhdHVzPC9zdW1tYXJ5PgogICAgICAgIC8vLyA8cmVtYXJrcz5NdWx0aXBsZSBzdGF0dXMgdmFsdWVzIGNhbiBiZSBwcm92aWRlZCB3aXRoIGNvbW1hIHNlcGFyYXRlZCBzdHJpbmdzPC9yZW1hcmtzPgogICAgICAgIC8vLyA8cGFyYW0gbmFtZT0ic3RhdHVzIj5TdGF0dXMgdmFsdWVzIHRoYXQgbmVlZCB0byBiZSBjb25zaWRlcmVkIGZvciBmaWx0ZXI8L3BhcmFtPgogICAgICAgIC8vLyA8cmV0dXJucz4KICAgICAgICAvLy8gQSA8c2VlIGNyZWY9IlRhc2siLz4gcmVwcmVzZW50aW5nIHRoZSA8c2VlIGNyZWY9IklBcGlSZXNwb25zZSIvPiBpbnN0YW5jZSBjb250YWluaW5nIHRoZSByZXN1bHQ6CiAgICAgICAgLy8vIDxsaXN0IHR5cGU9InRhYmxlIj4KICAgICAgICAvLy8gPGxpc3RoZWFkZXI+CiAgICAgICAgLy8vIDx0ZXJtPlN0YXR1czwvdGVybT4KICAgICAgICAvLy8gPGRlc2NyaXB0aW9uPkRlc2NyaXB0aW9uPC9kZXNjcmlwdGlvbj4KICAgICAgICAvLy8gPC9saXN0aGVhZGVyPgogICAgICAgIC8vLyA8aXRlbT4KICAgICAgICAvLy8gPHRlcm0+MjAwPC90ZXJtPgogICAgICAgIC8vLyA8ZGVzY3JpcHRpb24+c3VjY2Vzc2Z1bCBvcGVyYXRpb248L2Rlc2NyaXB0aW9uPgogICAgICAgIC8vLyA8L2l0ZW0+CiAgICAgICAgLy8vIDxpdGVtPgogICAgICAgIC8vLyA8dGVybT40MDA8L3Rlcm0+CiAgICAgICAgLy8vIDxkZXNjcmlwdGlvbj5JbnZhbGlkIHN0YXR1cyB2YWx1ZTwvZGVzY3JpcHRpb24+CiAgICAgICAgLy8vIDwvaXRlbT4KICAgICAgICAvLy8gPC9saXN0PgogICAgICAgIC8vLyA8L3JldHVybnM+CiAgICAgICAgW0hlYWRlcnMoIkFjY2VwdDogYXBwbGljYXRpb24vanNvbiIpXQogICAgICAgIFtHZXQoIi9wZXQvZmluZEJ5U3RhdHVzIildCiAgICAgICAgVGFzazxJQXBpUmVzcG9uc2U8SUNvbGxlY3Rpb248UGV0Pj4+IEZpbmRQZXRzQnlTdGF0dXMoW1F1ZXJ5XSBTdGF0dXM/IHN0YXR1cyk7CgogICAgICAgIC8vLyA8c3VtbWFyeT5GaW5kcyBQZXRzIGJ5IHRhZ3M8L3N1bW1hcnk+CiAgICAgICAgLy8vIDxyZW1hcmtzPk11bHRpcGxlIHRhZ3MgY2FuIGJlIHByb3ZpZGVkIHdpdGggY29tbWEgc2VwYXJhdGVkIHN0cmluZ3MuIFVzZSB0YWcxLCB0YWcyLCB0YWczIGZvciB0ZXN0aW5nLjwvcmVtYXJrcz4KICAgICAgICAvLy8gPHBhcmFtIG5hbWU9InRhZ3MiPlRhZ3MgdG8gZmlsdGVyIGJ5PC9wYXJhbT4KICAgICAgICAvLy8gPHJldHVybnM+CiAgICAgICAgLy8vIEEgPHNlZSBjcmVmPSJUYXNrIi8+IHJlcHJlc2VudGluZyB0aGUgPHNlZSBjcmVmPSJJQXBpUmVzcG9uc2UiLz4gaW5zdGFuY2UgY29udGFpbmluZyB0aGUgcmVzdWx0OgogICAgICAgIC8vLyA8bGlzdCB0eXBlPSJ0YWJsZSI+CiAgICAgICAgLy8vIDxsaXN0aGVhZGVyPgogICAgICAgIC8vLyA8dGVybT5TdGF0dXM8L3Rlcm0+CiAgICAgICAgLy8vIDxkZXNjcmlwdGlvbj5EZXNjcmlwdGlvbjwvZGVzY3JpcHRpb24+CiAgICAgICAgLy8vIDwvbGlzdGhlYWRlcj4KICAgICAgICAvLy8gPGl0ZW0+CiAgICAgICAgLy8vIDx0ZXJtPjIwMDwvdGVybT4KICAgICAgICAvLy8gPGRlc2NyaXB0aW9uPnN1Y2Nlc3NmdWwgb3BlcmF0aW9uPC9kZXNjcmlwdGlvbj4KICAgICAgICAvLy8gPC9pdGVtPgogICAgICAgIC8vLyA8aXRlbT4KICAgICAgICAvLy8gPHRlcm0+NDAwPC90ZXJtPgogICAgICAgIC8vLyA8ZGVzY3JpcHRpb24+SW52YWxpZCB0YWcgdmFsdWU8L2Rlc2NyaXB0aW9uPgogICAgICAgIC8vLyA8L2l0ZW0+CiAgICAgICAgLy8vIDwvbGlzdD4KICAgICAgICAvLy8gPC9yZXR1cm5zPgogICAgICAgIFtIZWFkZXJzKCJBY2NlcHQ6IGFwcGxpY2F0aW9uL2pzb24iKV0KICAgICAgICBbR2V0KCIvcGV0L2ZpbmRCeVRhZ3MiKV0KICAgICAgICBUYXNrPElBcGlSZXNwb25zZTxJQ29sbGVjdGlvbjxQZXQ+Pj4gRmluZFBldHNCeVRhZ3MoW1F1ZXJ5KENvbGxlY3Rpb25Gb3JtYXQuTXVsdGkpXSBJRW51bWVyYWJsZTxzdHJpbmc+IHRhZ3MpOwoKICAgICAgICAvLy8gPHN1bW1hcnk+RmluZCBwZXQgYnkgSUQ8L3N1bW1hcnk+CiAgICAgICAgLy8vIDxyZW1hcmtzPlJldHVybnMgYSBzaW5nbGUgcGV0PC9yZW1hcmtzPgogICAgICAgIC8vLyA8cGFyYW0gbmFtZT0icGV0SWQiPklEIG9mIHBldCB0byByZXR1cm48L3BhcmFtPgogICAgICAgIC8vLyA8cmV0dXJucz4KICAgICAgICAvLy8gQSA8c2VlIGNyZWY9IlRhc2siLz4gcmVwcmVzZW50aW5nIHRoZSA8c2VlIGNyZWY9IklBcGlSZXNwb25zZSIvPiBpbnN0YW5jZSBjb250YWluaW5nIHRoZSByZXN1bHQ6CiAgICAgICAgLy8vIDxsaXN0IHR5cGU9InRhYmxlIj4KICAgICAgICAvLy8gPGxpc3RoZWFkZXI+CiAgICAgICAgLy8vIDx0ZXJtPlN0YXR1czwvdGVybT4KICAgICAgICAvLy8gPGRlc2NyaXB0aW9uPkRlc2NyaXB0aW9uPC9kZXNjcmlwdGlvbj4KICAgICAgICAvLy8gPC9saXN0aGVhZGVyPgogICAgICAgIC8vLyA8aXRlbT4KICAgICAgICAvLy8gPHRlcm0+MjAwPC90ZXJtPgogICAgICAgIC8vLyA8ZGVzY3JpcHRpb24+c3VjY2Vzc2Z1bCBvcGVyYXRpb248L2Rlc2NyaXB0aW9uPgogICAgICAgIC8vLyA8L2l0ZW0+CiAgICAgICAgLy8vIDxpdGVtPgogICAgICAgIC8vLyA8dGVybT40MDA8L3Rlcm0+CiAgICAgICAgLy8vIDxkZXNjcmlwdGlvbj5JbnZhbGlkIElEIHN1cHBsaWVkPC9kZXNjcmlwdGlvbj4KICAgICAgICAvLy8gPC9pdGVtPgogICAgICAgIC8vLyA8aXRlbT4KICAgICAgICAvLy8gPHRlcm0+NDA0PC90ZXJtPgogICAgICAgIC8vLyA8ZGVzY3JpcHRpb24+UGV0IG5vdCBmb3VuZDwvZGVzY3JpcHRpb24+CiAgICAgICAgLy8vIDwvaXRlbT4KICAgICAgICAvLy8gPC9saXN0PgogICAgICAgIC8vLyA8L3JldHVybnM+CiAgICAgICAgW0hlYWRlcnMoIkFjY2VwdDogYXBwbGljYXRpb24veG1sLCBhcHBsaWNhdGlvbi9qc29uIildCiAgICAgICAgW0dldCgiL3BldC97cGV0SWR9IildCiAgICAgICAgVGFzazxJQXBpUmVzcG9uc2U8UGV0Pj4gR2V0UGV0QnlJZChsb25nIHBldElkKTsKCiAgICAgICAgLy8vIDxzdW1tYXJ5PlVwZGF0ZXMgYSBwZXQgaW4gdGhlIHN0b3JlIHdpdGggZm9ybSBkYXRhPC9zdW1tYXJ5PgogICAgICAgIC8vLyA8cGFyYW0gbmFtZT0icGV0SWQiPklEIG9mIHBldCB0aGF0IG5lZWRzIHRvIGJlIHVwZGF0ZWQ8L3BhcmFtPgogICAgICAgIC8vLyA8cGFyYW0gbmFtZT0ibmFtZSI+TmFtZSBvZiBwZXQgdGhhdCBuZWVkcyB0byBiZSB1cGRhdGVkPC9wYXJhbT4KICAgICAgICAvLy8gPHBhcmFtIG5hbWU9InN0YXR1cyI+U3RhdHVzIG9mIHBldCB0aGF0IG5lZWRzIHRvIGJlIHVwZGF0ZWQ8L3BhcmFtPgogICAgICAgIC8vLyA8cmV0dXJucz4KICAgICAgICAvLy8gQSA8c2VlIGNyZWY9IlRhc2siLz4gcmVwcmVzZW50aW5nIHRoZSA8c2VlIGNyZWY9IklBcGlSZXNwb25zZSIvPiBpbnN0YW5jZSBjb250YWluaW5nIHRoZSByZXN1bHQ6CiAgICAgICAgLy8vIDxsaXN0IHR5cGU9InRhYmxlIj4KICAgICAgICAvLy8gPGxpc3RoZWFkZXI+CiAgICAgICAgLy8vIDx0ZXJtPlN0YXR1czwvdGVybT4KICAgICAgICAvLy8gPGRlc2NyaXB0aW9uPkRlc2NyaXB0aW9uPC9kZXNjcmlwdGlvbj4KICAgICAgICAvLy8gPC9saXN0aGVhZGVyPgogICAgICAgIC8vLyA8aXRlbT4KICAgICAgICAvLy8gPHRlcm0+NDA1PC90ZXJtPgogICAgICAgIC8vLyA8ZGVzY3JpcHRpb24+SW52YWxpZCBpbnB1dDwvZGVzY3JpcHRpb24+CiAgICAgICAgLy8vIDwvaXRlbT4KICAgICAgICAvLy8gPC9saXN0PgogICAgICAgIC8vLyA8L3JldHVybnM+CiAgICAgICAgW1Bvc3QoIi9wZXQve3BldElkfSIpXQogICAgICAgIFRhc2s8SUFwaVJlc3BvbnNlPiBVcGRhdGVQZXRXaXRoRm9ybShsb25nIHBldElkLCBbUXVlcnldIHN0cmluZyBuYW1lLCBbUXVlcnldIHN0cmluZyBzdGF0dXMpOwoKICAgICAgICAvLy8gPHN1bW1hcnk+RGVsZXRlcyBhIHBldDwvc3VtbWFyeT4KICAgICAgICAvLy8gPHBhcmFtIG5hbWU9InBldElkIj5QZXQgaWQgdG8gZGVsZXRlPC9wYXJhbT4KICAgICAgICAvLy8gPHJldHVybnM+CiAgICAgICAgLy8vIEEgPHNlZSBjcmVmPSJUYXNrIi8+IHJlcHJlc2VudGluZyB0aGUgPHNlZSBjcmVmPSJJQXBpUmVzcG9uc2UiLz4gaW5zdGFuY2UgY29udGFpbmluZyB0aGUgcmVzdWx0OgogICAgICAgIC8vLyA8bGlzdCB0eXBlPSJ0YWJsZSI+CiAgICAgICAgLy8vIDxsaXN0aGVhZGVyPgogICAgICAgIC8vLyA8dGVybT5TdGF0dXM8L3Rlcm0+CiAgICAgICAgLy8vIDxkZXNjcmlwdGlvbj5EZXNjcmlwdGlvbjwvZGVzY3JpcHRpb24+CiAgICAgICAgLy8vIDwvbGlzdGhlYWRlcj4KICAgICAgICAvLy8gPGl0ZW0+CiAgICAgICAgLy8vIDx0ZXJtPjQwMDwvdGVybT4KICAgICAgICAvLy8gPGRlc2NyaXB0aW9uPkludmFsaWQgcGV0IHZhbHVlPC9kZXNjcmlwdGlvbj4KICAgICAgICAvLy8gPC9pdGVtPgogICAgICAgIC8vLyA8L2xpc3Q+CiAgICAgICAgLy8vIDwvcmV0dXJucz4KICAgICAgICBbRGVsZXRlKCIvcGV0L3twZXRJZH0iKV0KICAgICAgICBUYXNrPElBcGlSZXNwb25zZT4gRGVsZXRlUGV0KGxvbmcgcGV0SWQsIFtIZWFkZXIoImFwaV9rZXkiKV0gc3RyaW5nIGFwaV9rZXkpOwoKICAgICAgICAvLy8gPHN1bW1hcnk+dXBsb2FkcyBhbiBpbWFnZTwvc3VtbWFyeT4KICAgICAgICAvLy8gPHBhcmFtIG5hbWU9InBldElkIj5JRCBvZiBwZXQgdG8gdXBkYXRlPC9wYXJhbT4KICAgICAgICAvLy8gPHBhcmFtIG5hbWU9ImFkZGl0aW9uYWxNZXRhZGF0YSI+QWRkaXRpb25hbCBNZXRhZGF0YTwvcGFyYW0+CiAgICAgICAgLy8vIDxyZXR1cm5zPgogICAgICAgIC8vLyBBIDxzZWUgY3JlZj0iVGFzayIvPiByZXByZXNlbnRpbmcgdGhlIDxzZWUgY3JlZj0iSUFwaVJlc3BvbnNlIi8+IGluc3RhbmNlIGNvbnRhaW5pbmcgdGhlIHJlc3VsdDoKICAgICAgICAvLy8gPGxpc3QgdHlwZT0idGFibGUiPgogICAgICAgIC8vLyA8bGlzdGhlYWRlcj4KICAgICAgICAvLy8gPHRlcm0+U3RhdHVzPC90ZXJtPgogICAgICAgIC8vLyA8ZGVzY3JpcHRpb24+RGVzY3JpcHRpb248L2Rlc2NyaXB0aW9uPgogICAgICAgIC8vLyA8L2xpc3RoZWFkZXI+CiAgICAgICAgLy8vIDxpdGVtPgogICAgICAgIC8vLyA8dGVybT4yMDA8L3Rlcm0+CiAgICAgICAgLy8vIDxkZXNjcmlwdGlvbj5zdWNjZXNzZnVsIG9wZXJhdGlvbjwvZGVzY3JpcHRpb24+CiAgICAgICAgLy8vIDwvaXRlbT4KICAgICAgICAvLy8gPC9saXN0PgogICAgICAgIC8vLyA8L3JldHVybnM+CiAgICAgICAgW0hlYWRlcnMoIkFjY2VwdDogYXBwbGljYXRpb24vanNvbiIpXQogICAgICAgIFtQb3N0KCIvcGV0L3twZXRJZH0vdXBsb2FkSW1hZ2UiKV0KICAgICAgICBUYXNrPElBcGlSZXNwb25zZTxBcGlSZXNwb25zZT4+IFVwbG9hZEZpbGUobG9uZyBwZXRJZCwgW1F1ZXJ5XSBzdHJpbmcgYWRkaXRpb25hbE1ldGFkYXRhLCAgU3RyZWFtUGFydCBib2R5KTsKCiAgICAgICAgLy8vIDxzdW1tYXJ5PlJldHVybnMgcGV0IGludmVudG9yaWVzIGJ5IHN0YXR1czwvc3VtbWFyeT4KICAgICAgICAvLy8gPHJlbWFya3M+UmV0dXJucyBhIG1hcCBvZiBzdGF0dXMgY29kZXMgdG8gcXVhbnRpdGllczwvcmVtYXJrcz4KICAgICAgICAvLy8gPHJldHVybnM+c3VjY2Vzc2Z1bCBvcGVyYXRpb248L3JldHVybnM+CiAgICAgICAgLy8vIDxleGNlcHRpb24gY3JlZj0iQXBpRXhjZXB0aW9uIj5UaHJvd24gd2hlbiB0aGUgcmVxdWVzdCByZXR1cm5zIGEgbm9uLXN1Y2Nlc3Mgc3RhdHVzIGNvZGUuPC9leGNlcHRpb24+CiAgICAgICAgW0hlYWRlcnMoIkFjY2VwdDogYXBwbGljYXRpb24vanNvbiIpXQogICAgICAgIFtHZXQoIi9zdG9yZS9pbnZlbnRvcnkiKV0KICAgICAgICBUYXNrPElBcGlSZXNwb25zZTxJRGljdGlvbmFyeTxzdHJpbmcsIGludD4+PiBHZXRJbnZlbnRvcnkoKTsKCiAgICAgICAgLy8vIDxzdW1tYXJ5PlBsYWNlIGFuIG9yZGVyIGZvciBhIHBldDwvc3VtbWFyeT4KICAgICAgICAvLy8gPHJlbWFya3M+UGxhY2UgYSBuZXcgb3JkZXIgaW4gdGhlIHN0b3JlPC9yZW1hcmtzPgogICAgICAgIC8vLyA8cmV0dXJucz4KICAgICAgICAvLy8gQSA8c2VlIGNyZWY9IlRhc2siLz4gcmVwcmVzZW50aW5nIHRoZSA8c2VlIGNyZWY9IklBcGlSZXNwb25zZSIvPiBpbnN0YW5jZSBjb250YWluaW5nIHRoZSByZXN1bHQ6CiAgICAgICAgLy8vIDxsaXN0IHR5cGU9InRhYmxlIj4KICAgICAgICAvLy8gPGxpc3RoZWFkZXI+CiAgICAgICAgLy8vIDx0ZXJtPlN0YXR1czwvdGVybT4KICAgICAgICAvLy8gPGRlc2NyaXB0aW9uPkRlc2NyaXB0aW9uPC9kZXNjcmlwdGlvbj4KICAgICAgICAvLy8gPC9saXN0aGVhZGVyPgogICAgICAgIC8vLyA8aXRlbT4KICAgICAgICAvLy8gPHRlcm0+MjAwPC90ZXJtPgogICAgICAgIC8vLyA8ZGVzY3JpcHRpb24+c3VjY2Vzc2Z1bCBvcGVyYXRpb248L2Rlc2NyaXB0aW9uPgogICAgICAgIC8vLyA8L2l0ZW0+CiAgICAgICAgLy8vIDxpdGVtPgogICAgICAgIC8vLyA8dGVybT40MDU8L3Rlcm0+CiAgICAgICAgLy8vIDxkZXNjcmlwdGlvbj5JbnZhbGlkIGlucHV0PC9kZXNjcmlwdGlvbj4KICAgICAgICAvLy8gPC9pdGVtPgogICAgICAgIC8vLyA8L2xpc3Q+CiAgICAgICAgLy8vIDwvcmV0dXJucz4KICAgICAgICBbSGVhZGVycygiQWNjZXB0OiBhcHBsaWNhdGlvbi9qc29uIildCiAgICAgICAgW1Bvc3QoIi9zdG9yZS9vcmRlciIpXQogICAgICAgIFRhc2s8SUFwaVJlc3BvbnNlPE9yZGVyPj4gUGxhY2VPcmRlcihbQm9keV0gT3JkZXIgYm9keSk7CgogICAgICAgIC8vLyA8c3VtbWFyeT5GaW5kIHB1cmNoYXNlIG9yZGVyIGJ5IElEPC9zdW1tYXJ5PgogICAgICAgIC8vLyA8cmVtYXJrcz5Gb3IgdmFsaWQgcmVzcG9uc2UgdHJ5IGludGVnZXIgSURzIHdpdGggdmFsdWUgPD0gNSBvciA+IDEwLiBPdGhlciB2YWx1ZXMgd2lsbCBnZW5lcmF0ZWQgZXhjZXB0aW9uczwvcmVtYXJrcz4KICAgICAgICAvLy8gPHBhcmFtIG5hbWU9Im9yZGVySWQiPklEIG9mIG9yZGVyIHRoYXQgbmVlZHMgdG8gYmUgZmV0Y2hlZDwvcGFyYW0+CiAgICAgICAgLy8vIDxyZXR1cm5zPgogICAgICAgIC8vLyBBIDxzZWUgY3JlZj0iVGFzayIvPiByZXByZXNlbnRpbmcgdGhlIDxzZWUgY3JlZj0iSUFwaVJlc3BvbnNlIi8+IGluc3RhbmNlIGNvbnRhaW5pbmcgdGhlIHJlc3VsdDoKICAgICAgICAvLy8gPGxpc3QgdHlwZT0idGFibGUiPgogICAgICAgIC8vLyA8bGlzdGhlYWRlcj4KICAgICAgICAvLy8gPHRlcm0+U3RhdHVzPC90ZXJtPgogICAgICAgIC8vLyA8ZGVzY3JpcHRpb24+RGVzY3JpcHRpb248L2Rlc2NyaXB0aW9uPgogICAgICAgIC8vLyA8L2xpc3RoZWFkZXI+CiAgICAgICAgLy8vIDxpdGVtPgogICAgICAgIC8vLyA8dGVybT4yMDA8L3Rlcm0+CiAgICAgICAgLy8vIDxkZXNjcmlwdGlvbj5zdWNjZXNzZnVsIG9wZXJhdGlvbjwvZGVzY3JpcHRpb24+CiAgICAgICAgLy8vIDwvaXRlbT4KICAgICAgICAvLy8gPGl0ZW0+CiAgICAgICAgLy8vIDx0ZXJtPjQwMDwvdGVybT4KICAgICAgICAvLy8gPGRlc2NyaXB0aW9uPkludmFsaWQgSUQgc3VwcGxpZWQ8L2Rlc2NyaXB0aW9uPgogICAgICAgIC8vLyA8L2l0ZW0+CiAgICAgICAgLy8vIDxpdGVtPgogICAgICAgIC8vLyA8dGVybT40MDQ8L3Rlcm0+CiAgICAgICAgLy8vIDxkZXNjcmlwdGlvbj5PcmRlciBub3QgZm91bmQ8L2Rlc2NyaXB0aW9uPgogICAgICAgIC8vLyA8L2l0ZW0+CiAgICAgICAgLy8vIDwvbGlzdD4KICAgICAgICAvLy8gPC9yZXR1cm5zPgogICAgICAgIFtIZWFkZXJzKCJBY2NlcHQ6IGFwcGxpY2F0aW9uL2pzb24iKV0KICAgICAgICBbR2V0KCIvc3RvcmUvb3JkZXIve29yZGVySWR9IildCiAgICAgICAgVGFzazxJQXBpUmVzcG9uc2U8T3JkZXI+PiBHZXRPcmRlckJ5SWQobG9uZyBvcmRlcklkKTsKCiAgICAgICAgLy8vIDxzdW1tYXJ5PkRlbGV0ZSBwdXJjaGFzZSBvcmRlciBieSBJRDwvc3VtbWFyeT4KICAgICAgICAvLy8gPHJlbWFya3M+Rm9yIHZhbGlkIHJlc3BvbnNlIHRyeSBpbnRlZ2VyIElEcyB3aXRoIHZhbHVlIDwgMTAwMC4gQW55dGhpbmcgYWJvdmUgMTAwMCBvciBub25pbnRlZ2VycyB3aWxsIGdlbmVyYXRlIEFQSSBlcnJvcnM8L3JlbWFya3M+CiAgICAgICAgLy8vIDxwYXJhbSBuYW1lPSJvcmRlcklkIj5JRCBvZiB0aGUgb3JkZXIgdGhhdCBuZWVkcyB0byBiZSBkZWxldGVkPC9wYXJhbT4KICAgICAgICAvLy8gPHJldHVybnM+CiAgICAgICAgLy8vIEEgPHNlZSBjcmVmPSJUYXNrIi8+IHJlcHJlc2VudGluZyB0aGUgPHNlZSBjcmVmPSJJQXBpUmVzcG9uc2UiLz4gaW5zdGFuY2UgY29udGFpbmluZyB0aGUgcmVzdWx0OgogICAgICAgIC8vLyA8bGlzdCB0eXBlPSJ0YWJsZSI+CiAgICAgICAgLy8vIDxsaXN0aGVhZGVyPgogICAgICAgIC8vLyA8dGVybT5TdGF0dXM8L3Rlcm0+CiAgICAgICAgLy8vIDxkZXNjcmlwdGlvbj5EZXNjcmlwdGlvbjwvZGVzY3JpcHRpb24+CiAgICAgICAgLy8vIDwvbGlzdGhlYWRlcj4KICAgICAgICAvLy8gPGl0ZW0+CiAgICAgICAgLy8vIDx0ZXJtPjQwMDwvdGVybT4KICAgICAgICAvLy8gPGRlc2NyaXB0aW9uPkludmFsaWQgSUQgc3VwcGxpZWQ8L2Rlc2NyaXB0aW9uPgogICAgICAgIC8vLyA8L2l0ZW0+CiAgICAgICAgLy8vIDxpdGVtPgogICAgICAgIC8vLyA8dGVybT40MDQ8L3Rlcm0+CiAgICAgICAgLy8vIDxkZXNjcmlwdGlvbj5PcmRlciBub3QgZm91bmQ8L2Rlc2NyaXB0aW9uPgogICAgICAgIC8vLyA8L2l0ZW0+CiAgICAgICAgLy8vIDwvbGlzdD4KICAgICAgICAvLy8gPC9yZXR1cm5zPgogICAgICAgIFtEZWxldGUoIi9zdG9yZS9vcmRlci97b3JkZXJJZH0iKV0KICAgICAgICBUYXNrPElBcGlSZXNwb25zZT4gRGVsZXRlT3JkZXIobG9uZyBvcmRlcklkKTsKCiAgICAgICAgLy8vIDxzdW1tYXJ5PkNyZWF0ZSB1c2VyPC9zdW1tYXJ5PgogICAgICAgIC8vLyA8cmVtYXJrcz5UaGlzIGNhbiBvbmx5IGJlIGRvbmUgYnkgdGhlIGxvZ2dlZCBpbiB1c2VyLjwvcmVtYXJrcz4KICAgICAgICAvLy8gPHBhcmFtIG5hbWU9ImJvZHkiPkNyZWF0ZWQgdXNlciBvYmplY3Q8L3BhcmFtPgogICAgICAgIC8vLyA8cmV0dXJucz5BIDxzZWUgY3JlZj0iVGFzayIvPiByZXByZXNlbnRpbmcgdGhlIDxzZWUgY3JlZj0iSUFwaVJlc3BvbnNlIi8+IGluc3RhbmNlIGNvbnRhaW5pbmcgdGhlIHJlc3VsdC48L3JldHVybnM+CiAgICAgICAgW0hlYWRlcnMoIkFjY2VwdDogYXBwbGljYXRpb24vanNvbiwgYXBwbGljYXRpb24veG1sIildCiAgICAgICAgW1Bvc3QoIi91c2VyIildCiAgICAgICAgVGFzazxJQXBpUmVzcG9uc2U+IENyZWF0ZVVzZXIoW0JvZHldIFVzZXIgYm9keSk7CgogICAgICAgIC8vLyA8c3VtbWFyeT5DcmVhdGVzIGxpc3Qgb2YgdXNlcnMgd2l0aCBnaXZlbiBpbnB1dCBhcnJheTwvc3VtbWFyeT4KICAgICAgICAvLy8gPHJlbWFya3M+Q3JlYXRlcyBsaXN0IG9mIHVzZXJzIHdpdGggZ2l2ZW4gaW5wdXQgYXJyYXk8L3JlbWFya3M+CiAgICAgICAgLy8vIDxyZXR1cm5zPgogICAgICAgIC8vLyBBIDxzZWUgY3JlZj0iVGFzayIvPiByZXByZXNlbnRpbmcgdGhlIDxzZWUgY3JlZj0iSUFwaVJlc3BvbnNlIi8+IGluc3RhbmNlIGNvbnRhaW5pbmcgdGhlIHJlc3VsdDoKICAgICAgICAvLy8gPGxpc3QgdHlwZT0idGFibGUiPgogICAgICAgIC8vLyA8bGlzdGhlYWRlcj4KICAgICAgICAvLy8gPHRlcm0+U3RhdHVzPC90ZXJtPgogICAgICAgIC8vLyA8ZGVzY3JpcHRpb24+RGVzY3JpcHRpb248L2Rlc2NyaXB0aW9uPgogICAgICAgIC8vLyA8L2xpc3RoZWFkZXI+CiAgICAgICAgLy8vIDxpdGVtPgogICAgICAgIC8vLyA8dGVybT4yMDA8L3Rlcm0+CiAgICAgICAgLy8vIDxkZXNjcmlwdGlvbj5TdWNjZXNzZnVsIG9wZXJhdGlvbjwvZGVzY3JpcHRpb24+CiAgICAgICAgLy8vIDwvaXRlbT4KICAgICAgICAvLy8gPC9saXN0PgogICAgICAgIC8vLyA8L3JldHVybnM+CiAgICAgICAgW0hlYWRlcnMoIkFjY2VwdDogYXBwbGljYXRpb24veG1sLCBhcHBsaWNhdGlvbi9qc29uIildCiAgICAgICAgW1Bvc3QoIi91c2VyL2NyZWF0ZVdpdGhMaXN0IildCiAgICAgICAgVGFzazxJQXBpUmVzcG9uc2U8VXNlcj4+IENyZWF0ZVVzZXJzV2l0aExpc3RJbnB1dChbQm9keV0gSUVudW1lcmFibGU8VXNlcj4gYm9keSk7CgogICAgICAgIC8vLyA8c3VtbWFyeT5Mb2dzIHVzZXIgaW50byB0aGUgc3lzdGVtPC9zdW1tYXJ5PgogICAgICAgIC8vLyA8cGFyYW0gbmFtZT0idXNlcm5hbWUiPlRoZSB1c2VyIG5hbWUgZm9yIGxvZ2luPC9wYXJhbT4KICAgICAgICAvLy8gPHBhcmFtIG5hbWU9InBhc3N3b3JkIj5UaGUgcGFzc3dvcmQgZm9yIGxvZ2luIGluIGNsZWFyIHRleHQ8L3BhcmFtPgogICAgICAgIC8vLyA8cmV0dXJucz4KICAgICAgICAvLy8gQSA8c2VlIGNyZWY9IlRhc2siLz4gcmVwcmVzZW50aW5nIHRoZSA8c2VlIGNyZWY9IklBcGlSZXNwb25zZSIvPiBpbnN0YW5jZSBjb250YWluaW5nIHRoZSByZXN1bHQ6CiAgICAgICAgLy8vIDxsaXN0IHR5cGU9InRhYmxlIj4KICAgICAgICAvLy8gPGxpc3RoZWFkZXI+CiAgICAgICAgLy8vIDx0ZXJtPlN0YXR1czwvdGVybT4KICAgICAgICAvLy8gPGRlc2NyaXB0aW9uPkRlc2NyaXB0aW9uPC9kZXNjcmlwdGlvbj4KICAgICAgICAvLy8gPC9saXN0aGVhZGVyPgogICAgICAgIC8vLyA8aXRlbT4KICAgICAgICAvLy8gPHRlcm0+MjAwPC90ZXJtPgogICAgICAgIC8vLyA8ZGVzY3JpcHRpb24+c3VjY2Vzc2Z1bCBvcGVyYXRpb248L2Rlc2NyaXB0aW9uPgogICAgICAgIC8vLyA8L2l0ZW0+CiAgICAgICAgLy8vIDxpdGVtPgogICAgICAgIC8vLyA8dGVybT40MDA8L3Rlcm0+CiAgICAgICAgLy8vIDxkZXNjcmlwdGlvbj5JbnZhbGlkIHVzZXJuYW1lL3Bhc3N3b3JkIHN1cHBsaWVkPC9kZXNjcmlwdGlvbj4KICAgICAgICAvLy8gPC9pdGVtPgogICAgICAgIC8vLyA8L2xpc3Q+CiAgICAgICAgLy8vIDwvcmV0dXJucz4KICAgICAgICBbSGVhZGVycygiQWNjZXB0OiBhcHBsaWNhdGlvbi9qc29uIildCiAgICAgICAgW0dldCgiL3VzZXIvbG9naW4iKV0KICAgICAgICBUYXNrPElBcGlSZXNwb25zZTxzdHJpbmc+PiBMb2dpblVzZXIoW1F1ZXJ5XSBzdHJpbmcgdXNlcm5hbWUsIFtRdWVyeV0gc3RyaW5nIHBhc3N3b3JkKTsKCiAgICAgICAgLy8vIDxzdW1tYXJ5PkxvZ3Mgb3V0IGN1cnJlbnQgbG9nZ2VkIGluIHVzZXIgc2Vzc2lvbjwvc3VtbWFyeT4KICAgICAgICAvLy8gPHJldHVybnM+QSA8c2VlIGNyZWY9IlRhc2siLz4gcmVwcmVzZW50aW5nIHRoZSA8c2VlIGNyZWY9IklBcGlSZXNwb25zZSIvPiBpbnN0YW5jZSBjb250YWluaW5nIHRoZSByZXN1bHQuPC9yZXR1cm5zPgogICAgICAgIFtHZXQoIi91c2VyL2xvZ291dCIpXQogICAgICAgIFRhc2s8SUFwaVJlc3BvbnNlPiBMb2dvdXRVc2VyKCk7CgogICAgICAgIC8vLyA8c3VtbWFyeT5HZXQgdXNlciBieSB1c2VyIG5hbWU8L3N1bW1hcnk+CiAgICAgICAgLy8vIDxwYXJhbSBuYW1lPSJ1c2VybmFtZSI+VGhlIG5hbWUgdGhhdCBuZWVkcyB0byBiZSBmZXRjaGVkLiBVc2UgdXNlcjEgZm9yIHRlc3RpbmcuPC9wYXJhbT4KICAgICAgICAvLy8gPHJldHVybnM+CiAgICAgICAgLy8vIEEgPHNlZSBjcmVmPSJUYXNrIi8+IHJlcHJlc2VudGluZyB0aGUgPHNlZSBjcmVmPSJJQXBpUmVzcG9uc2UiLz4gaW5zdGFuY2UgY29udGFpbmluZyB0aGUgcmVzdWx0OgogICAgICAgIC8vLyA8bGlzdCB0eXBlPSJ0YWJsZSI+CiAgICAgICAgLy8vIDxsaXN0aGVhZGVyPgogICAgICAgIC8vLyA8dGVybT5TdGF0dXM8L3Rlcm0+CiAgICAgICAgLy8vIDxkZXNjcmlwdGlvbj5EZXNjcmlwdGlvbjwvZGVzY3JpcHRpb24+CiAgICAgICAgLy8vIDwvbGlzdGhlYWRlcj4KICAgICAgICAvLy8gPGl0ZW0+CiAgICAgICAgLy8vIDx0ZXJtPjIwMDwvdGVybT4KICAgICAgICAvLy8gPGRlc2NyaXB0aW9uPnN1Y2Nlc3NmdWwgb3BlcmF0aW9uPC9kZXNjcmlwdGlvbj4KICAgICAgICAvLy8gPC9pdGVtPgogICAgICAgIC8vLyA8aXRlbT4KICAgICAgICAvLy8gPHRlcm0+NDAwPC90ZXJtPgogICAgICAgIC8vLyA8ZGVzY3JpcHRpb24+SW52YWxpZCB1c2VybmFtZSBzdXBwbGllZDwvZGVzY3JpcHRpb24+CiAgICAgICAgLy8vIDwvaXRlbT4KICAgICAgICAvLy8gPGl0ZW0+CiAgICAgICAgLy8vIDx0ZXJtPjQwNDwvdGVybT4KICAgICAgICAvLy8gPGRlc2NyaXB0aW9uPlVzZXIgbm90IGZvdW5kPC9kZXNjcmlwdGlvbj4KICAgICAgICAvLy8gPC9pdGVtPgogICAgICAgIC8vLyA8L2xpc3Q+CiAgICAgICAgLy8vIDwvcmV0dXJucz4KICAgICAgICBbSGVhZGVycygiQWNjZXB0OiBhcHBsaWNhdGlvbi9qc29uIildCiAgICAgICAgW0dldCgiL3VzZXIve3VzZXJuYW1lfSIpXQogICAgICAgIFRhc2s8SUFwaVJlc3BvbnNlPFVzZXI+PiBHZXRVc2VyQnlOYW1lKHN0cmluZyB1c2VybmFtZSk7CgogICAgICAgIC8vLyA8c3VtbWFyeT5VcGRhdGUgdXNlcjwvc3VtbWFyeT4KICAgICAgICAvLy8gPHJlbWFya3M+VGhpcyBjYW4gb25seSBiZSBkb25lIGJ5IHRoZSBsb2dnZWQgaW4gdXNlci48L3JlbWFya3M+CiAgICAgICAgLy8vIDxwYXJhbSBuYW1lPSJ1c2VybmFtZSI+bmFtZSB0aGF0IG5lZWQgdG8gYmUgZGVsZXRlZDwvcGFyYW0+CiAgICAgICAgLy8vIDxwYXJhbSBuYW1lPSJib2R5Ij5VcGRhdGUgYW4gZXhpc3RlbnQgdXNlciBpbiB0aGUgc3RvcmU8L3BhcmFtPgogICAgICAgIC8vLyA8cmV0dXJucz5BIDxzZWUgY3JlZj0iVGFzayIvPiByZXByZXNlbnRpbmcgdGhlIDxzZWUgY3JlZj0iSUFwaVJlc3BvbnNlIi8+IGluc3RhbmNlIGNvbnRhaW5pbmcgdGhlIHJlc3VsdC48L3JldHVybnM+CiAgICAgICAgW1B1dCgiL3VzZXIve3VzZXJuYW1lfSIpXQogICAgICAgIFRhc2s8SUFwaVJlc3BvbnNlPiBVcGRhdGVVc2VyKHN0cmluZyB1c2VybmFtZSwgW0JvZHldIFVzZXIgYm9keSk7CgogICAgICAgIC8vLyA8c3VtbWFyeT5EZWxldGUgdXNlcjwvc3VtbWFyeT4KICAgICAgICAvLy8gPHJlbWFya3M+VGhpcyBjYW4gb25seSBiZSBkb25lIGJ5IHRoZSBsb2dnZWQgaW4gdXNlci48L3JlbWFya3M+CiAgICAgICAgLy8vIDxwYXJhbSBuYW1lPSJ1c2VybmFtZSI+VGhlIG5hbWUgdGhhdCBuZWVkcyB0byBiZSBkZWxldGVkPC9wYXJhbT4KICAgICAgICAvLy8gPHJldHVybnM+CiAgICAgICAgLy8vIEEgPHNlZSBjcmVmPSJUYXNrIi8+IHJlcHJlc2VudGluZyB0aGUgPHNlZSBjcmVmPSJJQXBpUmVzcG9uc2UiLz4gaW5zdGFuY2UgY29udGFpbmluZyB0aGUgcmVzdWx0OgogICAgICAgIC8vLyA8bGlzdCB0eXBlPSJ0YWJsZSI+CiAgICAgICAgLy8vIDxsaXN0aGVhZGVyPgogICAgICAgIC8vLyA8dGVybT5TdGF0dXM8L3Rlcm0+CiAgICAgICAgLy8vIDxkZXNjcmlwdGlvbj5EZXNjcmlwdGlvbjwvZGVzY3JpcHRpb24+CiAgICAgICAgLy8vIDwvbGlzdGhlYWRlcj4KICAgICAgICAvLy8gPGl0ZW0+CiAgICAgICAgLy8vIDx0ZXJtPjQwMDwvdGVybT4KICAgICAgICAvLy8gPGRlc2NyaXB0aW9uPkludmFsaWQgdXNlcm5hbWUgc3VwcGxpZWQ8L2Rlc2NyaXB0aW9uPgogICAgICAgIC8vLyA8L2l0ZW0+CiAgICAgICAgLy8vIDxpdGVtPgogICAgICAgIC8vLyA8dGVybT40MDQ8L3Rlcm0+CiAgICAgICAgLy8vIDxkZXNjcmlwdGlvbj5Vc2VyIG5vdCBmb3VuZDwvZGVzY3JpcHRpb24+CiAgICAgICAgLy8vIDwvaXRlbT4KICAgICAgICAvLy8gPC9saXN0PgogICAgICAgIC8vLyA8L3JldHVybnM+CiAgICAgICAgW0RlbGV0ZSgiL3VzZXIve3VzZXJuYW1lfSIpXQogICAgICAgIFRhc2s8SUFwaVJlc3BvbnNlPiBEZWxldGVVc2VyKHN0cmluZyB1c2VybmFtZSk7CiAgICB9Cn0KYGBgCgpIZXJlJ3MgYW4gZXhhbXBsZSBnZW5lcmF0ZWQgb3V0cHV0IGZyb20gdGhlIFtTd2FnZ2VyIFBldHN0b3JlIGV4YW1wbGVdKGh0dHBzOi8vcGV0c3RvcmUzLnN3YWdnZXIuaW8pIGNvbmZpZ3VyZWQgdG8gZ2VuZXJhdGUgYW4gaW50ZXJmYWNlIGZvciBlYWNoIGVuZHBvaW50CgoqKkNMSSBUb29sKioKCmBgYGJhc2gKJCByZWZpdHRlciAuL29wZW5hcGkuanNvbiAtLW5hbWVzcGFjZSAiWW91ci5OYW1lc3BhY2UuT2YuQ2hvaWNlLkdlbmVyYXRlZENvZGUiIC0tbXVsdGlwbGUtaW50ZXJmYWNlcyBCeUVuZHBvaW50CmBgYAoKKipTb3VyY2UgR2VuZXJhdG9yICoqKi5yZWZpdHRlcioqKiBmaWxlKioKCmBgYGpzb24KewogICJvcGVuQXBpUGF0aCI6ICIuL29wZW5hcGkuanNvbiIsCiAgIm5hbWVzcGFjZSI6ICJZb3VyLk5hbWVzcGFjZS5PZi5DaG9pY2UuR2VuZXJhdGVkQ29kZSIsCiAgIm11bHRpcGxlSW50ZXJmYWNlcyI6ICJCeUVuZHBvaW50Igp9CmBgYAoKKipPdXRwdXQqKgoKYGBgY3MKLy8vIDxzdW1tYXJ5PlVwZGF0ZSBhbiBleGlzdGluZyBwZXQ8L3N1bW1hcnk+CltTeXN0ZW0uQ29kZURvbS5Db21waWxlci5HZW5lcmF0ZWRDb2RlKCJSZWZpdHRlciIsICIxLjAuMC4wIildCnB1YmxpYyBwYXJ0aWFsIGludGVyZmFjZSBJVXBkYXRlUGV0RW5kcG9pbnQKewogICAgLy8vIDxzdW1tYXJ5PlVwZGF0ZSBhbiBleGlzdGluZyBwZXQ8L3N1bW1hcnk+CiAgICAvLy8gPHJlbWFya3M+VXBkYXRlIGFuIGV4aXN0aW5nIHBldCBieSBJZDwvcmVtYXJrcz4KICAgIC8vLyA8cGFyYW0gbmFtZT0iYm9keSI+VXBkYXRlIGFuIGV4aXN0ZW50IHBldCBpbiB0aGUgc3RvcmU8L3BhcmFtPgogICAgLy8vIDxyZXR1cm5zPlN1Y2Nlc3NmdWwgb3BlcmF0aW9uPC9yZXR1cm5zPgogICAgLy8vIDxleGNlcHRpb24gY3JlZj0iQXBpRXhjZXB0aW9uIj4KICAgIC8vLyBUaHJvd24gd2hlbiB0aGUgcmVxdWVzdCByZXR1cm5zIGEgbm9uLXN1Y2Nlc3Mgc3RhdHVzIGNvZGU6CiAgICAvLy8gPGxpc3QgdHlwZT0idGFibGUiPgogICAgLy8vIDxsaXN0aGVhZGVyPgogICAgLy8vIDx0ZXJtPlN0YXR1czwvdGVybT4KICAgIC8vLyA8ZGVzY3JpcHRpb24+RGVzY3JpcHRpb248L2Rlc2NyaXB0aW9uPgogICAgLy8vIDwvbGlzdGhlYWRlcj4KICAgIC8vLyA8aXRlbT4KICAgIC8vLyA8dGVybT40MDA8L3Rlcm0+CiAgICAvLy8gPGRlc2NyaXB0aW9uPkludmFsaWQgSUQgc3VwcGxpZWQ8L2Rlc2NyaXB0aW9uPgogICAgLy8vIDwvaXRlbT4KICAgIC8vLyA8aXRlbT4KICAgIC8vLyA8dGVybT40MDQ8L3Rlcm0+CiAgICAvLy8gPGRlc2NyaXB0aW9uPlBldCBub3QgZm91bmQ8L2Rlc2NyaXB0aW9uPgogICAgLy8vIDwvaXRlbT4KICAgIC8vLyA8aXRlbT4KICAgIC8vLyA8dGVybT40MDU8L3Rlcm0+CiAgICAvLy8gPGRlc2NyaXB0aW9uPlZhbGlkYXRpb24gZXhjZXB0aW9uPC9kZXNjcmlwdGlvbj4KICAgIC8vLyA8L2l0ZW0+CiAgICAvLy8gPC9saXN0PgogICAgLy8vIDwvZXhjZXB0aW9uPgogICAgW0hlYWRlcnMoIkFjY2VwdDogYXBwbGljYXRpb24veG1sLCBhcHBsaWNhdGlvbi9qc29uIildCiAgICBbUHV0KCIvcGV0IildCiAgICBUYXNrPFBldD4gRXhlY3V0ZShbQm9keV0gUGV0IGJvZHkpOwp9CgovLy8gPHN1bW1hcnk+QWRkIGEgbmV3IHBldCB0byB0aGUgc3RvcmU8L3N1bW1hcnk+CltTeXN0ZW0uQ29kZURvbS5Db21waWxlci5HZW5lcmF0ZWRDb2RlKCJSZWZpdHRlciIsICIxLjAuMC4wIildCnB1YmxpYyBwYXJ0aWFsIGludGVyZmFjZSBJQWRkUGV0RW5kcG9pbnQKewogICAgLy8vIDxzdW1tYXJ5PkFkZCBhIG5ldyBwZXQgdG8gdGhlIHN0b3JlPC9zdW1tYXJ5PgogICAgLy8vIDxyZW1hcmtzPkFkZCBhIG5ldyBwZXQgdG8gdGhlIHN0b3JlPC9yZW1hcmtzPgogICAgLy8vIDxwYXJhbSBuYW1lPSJib2R5Ij5DcmVhdGUgYSBuZXcgcGV0IGluIHRoZSBzdG9yZTwvcGFyYW0+CiAgICAvLy8gPHJldHVybnM+U3VjY2Vzc2Z1bCBvcGVyYXRpb248L3JldHVybnM+CiAgICAvLy8gPGV4Y2VwdGlvbiBjcmVmPSJBcGlFeGNlcHRpb24iPgogICAgLy8vIFRocm93biB3aGVuIHRoZSByZXF1ZXN0IHJldHVybnMgYSBub24tc3VjY2VzcyBzdGF0dXMgY29kZToKICAgIC8vLyA8bGlzdCB0eXBlPSJ0YWJsZSI+CiAgICAvLy8gPGxpc3RoZWFkZXI+CiAgICAvLy8gPHRlcm0+U3RhdHVzPC90ZXJtPgogICAgLy8vIDxkZXNjcmlwdGlvbj5EZXNjcmlwdGlvbjwvZGVzY3JpcHRpb24+CiAgICAvLy8gPC9saXN0aGVhZGVyPgogICAgLy8vIDxpdGVtPgogICAgLy8vIDx0ZXJtPjQwNTwvdGVybT4KICAgIC8vLyA8ZGVzY3JpcHRpb24+SW52YWxpZCBpbnB1dDwvZGVzY3JpcHRpb24+CiAgICAvLy8gPC9pdGVtPgogICAgLy8vIDwvbGlzdD4KICAgIC8vLyA8L2V4Y2VwdGlvbj4KICAgIFtIZWFkZXJzKCJBY2NlcHQ6IGFwcGxpY2F0aW9uL3htbCwgYXBwbGljYXRpb24vanNvbiIpXQogICAgW1Bvc3QoIi9wZXQiKV0KICAgIFRhc2s8UGV0PiBFeGVjdXRlKFtCb2R5XSBQZXQgYm9keSk7Cn0KCi8vLyA8c3VtbWFyeT5GaW5kcyBQZXRzIGJ5IHN0YXR1czwvc3VtbWFyeT4KW1N5c3RlbS5Db2RlRG9tLkNvbXBpbGVyLkdlbmVyYXRlZENvZGUoIlJlZml0dGVyIiwgIjEuMC4wLjAiKV0KcHVibGljIHBhcnRpYWwgaW50ZXJmYWNlIElGaW5kUGV0c0J5U3RhdHVzRW5kcG9pbnQKewogICAgLy8vIDxzdW1tYXJ5PkZpbmRzIFBldHMgYnkgc3RhdHVzPC9zdW1tYXJ5PgogICAgLy8vIDxyZW1hcmtzPk11bHRpcGxlIHN0YXR1cyB2YWx1ZXMgY2FuIGJlIHByb3ZpZGVkIHdpdGggY29tbWEgc2VwYXJhdGVkIHN0cmluZ3M8L3JlbWFya3M+CiAgICAvLy8gPHBhcmFtIG5hbWU9InN0YXR1cyI+U3RhdHVzIHZhbHVlcyB0aGF0IG5lZWQgdG8gYmUgY29uc2lkZXJlZCBmb3IgZmlsdGVyPC9wYXJhbT4KICAgIC8vLyA8cmV0dXJucz5zdWNjZXNzZnVsIG9wZXJhdGlvbjwvcmV0dXJucz4KICAgIC8vLyA8ZXhjZXB0aW9uIGNyZWY9IkFwaUV4Y2VwdGlvbiI+CiAgICAvLy8gVGhyb3duIHdoZW4gdGhlIHJlcXVlc3QgcmV0dXJucyBhIG5vbi1zdWNjZXNzIHN0YXR1cyBjb2RlOgogICAgLy8vIDxsaXN0IHR5cGU9InRhYmxlIj4KICAgIC8vLyA8bGlzdGhlYWRlcj4KICAgIC8vLyA8dGVybT5TdGF0dXM8L3Rlcm0+CiAgICAvLy8gPGRlc2NyaXB0aW9uPkRlc2NyaXB0aW9uPC9kZXNjcmlwdGlvbj4KICAgIC8vLyA8L2xpc3RoZWFkZXI+CiAgICAvLy8gPGl0ZW0+CiAgICAvLy8gPHRlcm0+NDAwPC90ZXJtPgogICAgLy8vIDxkZXNjcmlwdGlvbj5JbnZhbGlkIHN0YXR1cyB2YWx1ZTwvZGVzY3JpcHRpb24+CiAgICAvLy8gPC9pdGVtPgogICAgLy8vIDwvbGlzdD4KICAgIC8vLyA8L2V4Y2VwdGlvbj4KICAgIFtIZWFkZXJzKCJBY2NlcHQ6IGFwcGxpY2F0aW9uL2pzb24iKV0KICAgIFtHZXQoIi9wZXQvZmluZEJ5U3RhdHVzIildCiAgICBUYXNrPElDb2xsZWN0aW9uPFBldD4+IEV4ZWN1dGUoW1F1ZXJ5XSBTdGF0dXM/IHN0YXR1cyk7Cn0KCi8vLyA8c3VtbWFyeT5GaW5kcyBQZXRzIGJ5IHRhZ3M8L3N1bW1hcnk+CltTeXN0ZW0uQ29kZURvbS5Db21waWxlci5HZW5lcmF0ZWRDb2RlKCJSZWZpdHRlciIsICIxLjAuMC4wIildCnB1YmxpYyBwYXJ0aWFsIGludGVyZmFjZSBJRmluZFBldHNCeVRhZ3NFbmRwb2ludAp7CiAgICAvLy8gPHN1bW1hcnk+RmluZHMgUGV0cyBieSB0YWdzPC9zdW1tYXJ5PgogICAgLy8vIDxyZW1hcmtzPk11bHRpcGxlIHRhZ3MgY2FuIGJlIHByb3ZpZGVkIHdpdGggY29tbWEgc2VwYXJhdGVkIHN0cmluZ3MuIFVzZSB0YWcxLCB0YWcyLCB0YWczIGZvciB0ZXN0aW5nLjwvcmVtYXJrcz4KICAgIC8vLyA8cGFyYW0gbmFtZT0idGFncyI+VGFncyB0byBmaWx0ZXIgYnk8L3BhcmFtPgogICAgLy8vIDxyZXR1cm5zPnN1Y2Nlc3NmdWwgb3BlcmF0aW9uPC9yZXR1cm5zPgogICAgLy8vIDxleGNlcHRpb24gY3JlZj0iQXBpRXhjZXB0aW9uIj4KICAgIC8vLyBUaHJvd24gd2hlbiB0aGUgcmVxdWVzdCByZXR1cm5zIGEgbm9uLXN1Y2Nlc3Mgc3RhdHVzIGNvZGU6CiAgICAvLy8gPGxpc3QgdHlwZT0idGFibGUiPgogICAgLy8vIDxsaXN0aGVhZGVyPgogICAgLy8vIDx0ZXJtPlN0YXR1czwvdGVybT4KICAgIC8vLyA8ZGVzY3JpcHRpb24+RGVzY3JpcHRpb248L2Rlc2NyaXB0aW9uPgogICAgLy8vIDwvbGlzdGhlYWRlcj4KICAgIC8vLyA8aXRlbT4KICAgIC8vLyA8dGVybT40MDA8L3Rlcm0+CiAgICAvLy8gPGRlc2NyaXB0aW9uPkludmFsaWQgdGFnIHZhbHVlPC9kZXNjcmlwdGlvbj4KICAgIC8vLyA8L2l0ZW0+CiAgICAvLy8gPC9saXN0PgogICAgLy8vIDwvZXhjZXB0aW9uPgogICAgW0hlYWRlcnMoIkFjY2VwdDogYXBwbGljYXRpb24vanNvbiIpXQogICAgW0dldCgiL3BldC9maW5kQnlUYWdzIildCiAgICBUYXNrPElDb2xsZWN0aW9uPFBldD4+IEV4ZWN1dGUoW1F1ZXJ5KENvbGxlY3Rpb25Gb3JtYXQuTXVsdGkpXSBJRW51bWVyYWJsZTxzdHJpbmc+IHRhZ3MpOwp9CgovLy8gPHN1bW1hcnk+RmluZCBwZXQgYnkgSUQ8L3N1bW1hcnk+CltTeXN0ZW0uQ29kZURvbS5Db21waWxlci5HZW5lcmF0ZWRDb2RlKCJSZWZpdHRlciIsICIxLjAuMC4wIildCnB1YmxpYyBwYXJ0aWFsIGludGVyZmFjZSBJR2V0UGV0QnlJZEVuZHBvaW50CnsKICAgIC8vLyA8c3VtbWFyeT5GaW5kIHBldCBieSBJRDwvc3VtbWFyeT4KICAgIC8vLyA8cmVtYXJrcz5SZXR1cm5zIGEgc2luZ2xlIHBldDwvcmVtYXJrcz4KICAgIC8vLyA8cGFyYW0gbmFtZT0icGV0SWQiPklEIG9mIHBldCB0byByZXR1cm48L3BhcmFtPgogICAgLy8vIDxyZXR1cm5zPnN1Y2Nlc3NmdWwgb3BlcmF0aW9uPC9yZXR1cm5zPgogICAgLy8vIDxleGNlcHRpb24gY3JlZj0iQXBpRXhjZXB0aW9uIj4KICAgIC8vLyBUaHJvd24gd2hlbiB0aGUgcmVxdWVzdCByZXR1cm5zIGEgbm9uLXN1Y2Nlc3Mgc3RhdHVzIGNvZGU6CiAgICAvLy8gPGxpc3QgdHlwZT0idGFibGUiPgogICAgLy8vIDxsaXN0aGVhZGVyPgogICAgLy8vIDx0ZXJtPlN0YXR1czwvdGVybT4KICAgIC8vLyA8ZGVzY3JpcHRpb24+RGVzY3JpcHRpb248L2Rlc2NyaXB0aW9uPgogICAgLy8vIDwvbGlzdGhlYWRlcj4KICAgIC8vLyA8aXRlbT4KICAgIC8vLyA8dGVybT40MDA8L3Rlcm0+CiAgICAvLy8gPGRlc2NyaXB0aW9uPkludmFsaWQgSUQgc3VwcGxpZWQ8L2Rlc2NyaXB0aW9uPgogICAgLy8vIDwvaXRlbT4KICAgIC8vLyA8aXRlbT4KICAgIC8vLyA8dGVybT40MDQ8L3Rlcm0+CiAgICAvLy8gPGRlc2NyaXB0aW9uPlBldCBub3QgZm91bmQ8L2Rlc2NyaXB0aW9uPgogICAgLy8vIDwvaXRlbT4KICAgIC8vLyA8L2xpc3Q+CiAgICAvLy8gPC9leGNlcHRpb24+CiAgICBbSGVhZGVycygiQWNjZXB0OiBhcHBsaWNhdGlvbi94bWwsIGFwcGxpY2F0aW9uL2pzb24iKV0KICAgIFtHZXQoIi9wZXQve3BldElkfSIpXQogICAgVGFzazxQZXQ+IEV4ZWN1dGUobG9uZyBwZXRJZCk7Cn0KCi8vLyA8c3VtbWFyeT5VcGRhdGVzIGEgcGV0IGluIHRoZSBzdG9yZSB3aXRoIGZvcm0gZGF0YTwvc3VtbWFyeT4KW1N5c3RlbS5Db2RlRG9tLkNvbXBpbGVyLkdlbmVyYXRlZENvZGUoIlJlZml0dGVyIiwgIjEuMC4wLjAiKV0KcHVibGljIHBhcnRpYWwgaW50ZXJmYWNlIElVcGRhdGVQZXRXaXRoRm9ybUVuZHBvaW50CnsKICAgIC8vLyA8c3VtbWFyeT5VcGRhdGVzIGEgcGV0IGluIHRoZSBzdG9yZSB3aXRoIGZvcm0gZGF0YTwvc3VtbWFyeT4KICAgIC8vLyA8cGFyYW0gbmFtZT0icGV0SWQiPklEIG9mIHBldCB0aGF0IG5lZWRzIHRvIGJlIHVwZGF0ZWQ8L3BhcmFtPgogICAgLy8vIDxwYXJhbSBuYW1lPSJuYW1lIj5OYW1lIG9mIHBldCB0aGF0IG5lZWRzIHRvIGJlIHVwZGF0ZWQ8L3BhcmFtPgogICAgLy8vIDxwYXJhbSBuYW1lPSJzdGF0dXMiPlN0YXR1cyBvZiBwZXQgdGhhdCBuZWVkcyB0byBiZSB1cGRhdGVkPC9wYXJhbT4KICAgIC8vLyA8cmV0dXJucz5BIDxzZWUgY3JlZj0iVGFzayIvPiB0aGF0IGNvbXBsZXRlcyB3aGVuIHRoZSByZXF1ZXN0IGlzIGZpbmlzaGVkLjwvcmV0dXJucz4KICAgIC8vLyA8ZXhjZXB0aW9uIGNyZWY9IkFwaUV4Y2VwdGlvbiI+CiAgICAvLy8gVGhyb3duIHdoZW4gdGhlIHJlcXVlc3QgcmV0dXJucyBhIG5vbi1zdWNjZXNzIHN0YXR1cyBjb2RlOgogICAgLy8vIDxsaXN0IHR5cGU9InRhYmxlIj4KICAgIC8vLyA8bGlzdGhlYWRlcj4KICAgIC8vLyA8dGVybT5TdGF0dXM8L3Rlcm0+CiAgICAvLy8gPGRlc2NyaXB0aW9uPkRlc2NyaXB0aW9uPC9kZXNjcmlwdGlvbj4KICAgIC8vLyA8L2xpc3RoZWFkZXI+CiAgICAvLy8gPGl0ZW0+CiAgICAvLy8gPHRlcm0+NDA1PC90ZXJtPgogICAgLy8vIDxkZXNjcmlwdGlvbj5JbnZhbGlkIGlucHV0PC9kZXNjcmlwdGlvbj4KICAgIC8vLyA8L2l0ZW0+CiAgICAvLy8gPC9saXN0PgogICAgLy8vIDwvZXhjZXB0aW9uPgogICAgW1Bvc3QoIi9wZXQve3BldElkfSIpXQogICAgVGFzayBFeGVjdXRlKGxvbmcgcGV0SWQsIFtRdWVyeV0gc3RyaW5nIG5hbWUsIFtRdWVyeV0gc3RyaW5nIHN0YXR1cyk7Cn0KCi8vLyA8c3VtbWFyeT5EZWxldGVzIGEgcGV0PC9zdW1tYXJ5PgpbU3lzdGVtLkNvZGVEb20uQ29tcGlsZXIuR2VuZXJhdGVkQ29kZSgiUmVmaXR0ZXIiLCAiMS4wLjAuMCIpXQpwdWJsaWMgcGFydGlhbCBpbnRlcmZhY2UgSURlbGV0ZVBldEVuZHBvaW50CnsKICAgIC8vLyA8c3VtbWFyeT5EZWxldGVzIGEgcGV0PC9zdW1tYXJ5PgogICAgLy8vIDxwYXJhbSBuYW1lPSJwZXRJZCI+UGV0IGlkIHRvIGRlbGV0ZTwvcGFyYW0+CiAgICAvLy8gPHJldHVybnM+QSA8c2VlIGNyZWY9IlRhc2siLz4gdGhhdCBjb21wbGV0ZXMgd2hlbiB0aGUgcmVxdWVzdCBpcyBmaW5pc2hlZC48L3JldHVybnM+CiAgICAvLy8gPGV4Y2VwdGlvbiBjcmVmPSJBcGlFeGNlcHRpb24iPgogICAgLy8vIFRocm93biB3aGVuIHRoZSByZXF1ZXN0IHJldHVybnMgYSBub24tc3VjY2VzcyBzdGF0dXMgY29kZToKICAgIC8vLyA8bGlzdCB0eXBlPSJ0YWJsZSI+CiAgICAvLy8gPGxpc3RoZWFkZXI+CiAgICAvLy8gPHRlcm0+U3RhdHVzPC90ZXJtPgogICAgLy8vIDxkZXNjcmlwdGlvbj5EZXNjcmlwdGlvbjwvZGVzY3JpcHRpb24+CiAgICAvLy8gPC9saXN0aGVhZGVyPgogICAgLy8vIDxpdGVtPgogICAgLy8vIDx0ZXJtPjQwMDwvdGVybT4KICAgIC8vLyA8ZGVzY3JpcHRpb24+SW52YWxpZCBwZXQgdmFsdWU8L2Rlc2NyaXB0aW9uPgogICAgLy8vIDwvaXRlbT4KICAgIC8vLyA8L2xpc3Q+CiAgICAvLy8gPC9leGNlcHRpb24+CiAgICBbRGVsZXRlKCIvcGV0L3twZXRJZH0iKV0KICAgIFRhc2sgRXhlY3V0ZShsb25nIHBldElkLCBbSGVhZGVyKCJhcGlfa2V5IildIHN0cmluZyBhcGlfa2V5KTsKfQoKLy8vIDxzdW1tYXJ5PnVwbG9hZHMgYW4gaW1hZ2U8L3N1bW1hcnk+CltTeXN0ZW0uQ29kZURvbS5Db21waWxlci5HZW5lcmF0ZWRDb2RlKCJSZWZpdHRlciIsICIxLjAuMC4wIildCnB1YmxpYyBwYXJ0aWFsIGludGVyZmFjZSBJVXBsb2FkRmlsZUVuZHBvaW50CnsKICAgIC8vLyA8c3VtbWFyeT51cGxvYWRzIGFuIGltYWdlPC9zdW1tYXJ5PgogICAgLy8vIDxwYXJhbSBuYW1lPSJwZXRJZCI+SUQgb2YgcGV0IHRvIHVwZGF0ZTwvcGFyYW0+CiAgICAvLy8gPHBhcmFtIG5hbWU9ImFkZGl0aW9uYWxNZXRhZGF0YSI+QWRkaXRpb25hbCBNZXRhZGF0YTwvcGFyYW0+CiAgICAvLy8gPHJldHVybnM+CiAgICAvLy8gQSA8c2VlIGNyZWY9IlRhc2siLz4gcmVwcmVzZW50aW5nIHRoZSA8c2VlIGNyZWY9IklBcGlSZXNwb25zZSIvPiBpbnN0YW5jZSBjb250YWluaW5nIHRoZSByZXN1bHQ6CiAgICAvLy8gPGxpc3QgdHlwZT0idGFibGUiPgogICAgLy8vIDxsaXN0aGVhZGVyPgogICAgLy8vIDx0ZXJtPlN0YXR1czwvdGVybT4KICAgIC8vLyA8ZGVzY3JpcHRpb24+RGVzY3JpcHRpb248L2Rlc2NyaXB0aW9uPgogICAgLy8vIDwvbGlzdGhlYWRlcj4KICAgIC8vLyA8aXRlbT4KICAgIC8vLyA8dGVybT4yMDA8L3Rlcm0+CiAgICAvLy8gPGRlc2NyaXB0aW9uPnN1Y2Nlc3NmdWwgb3BlcmF0aW9uPC9kZXNjcmlwdGlvbj4KICAgIC8vLyA8L2l0ZW0+CiAgICAvLy8gPC9saXN0PgogICAgLy8vIDwvcmV0dXJucz4KICAgIFtIZWFkZXJzKCJBY2NlcHQ6IGFwcGxpY2F0aW9uL2pzb24iKV0KICAgIFtQb3N0KCIvcGV0L3twZXRJZH0vdXBsb2FkSW1hZ2UiKV0KICAgIFRhc2s8QXBpUmVzcG9uc2U+IEV4ZWN1dGUobG9uZyBwZXRJZCwgW1F1ZXJ5XSBzdHJpbmcgYWRkaXRpb25hbE1ldGFkYXRhLCAgU3RyZWFtUGFydCBib2R5KTsKfQoKLy8vIDxzdW1tYXJ5PlJldHVybnMgcGV0IGludmVudG9yaWVzIGJ5IHN0YXR1czwvc3VtbWFyeT4KW1N5c3RlbS5Db2RlRG9tLkNvbXBpbGVyLkdlbmVyYXRlZENvZGUoIlJlZml0dGVyIiwgIjEuMC4wLjAiKV0KcHVibGljIHBhcnRpYWwgaW50ZXJmYWNlIElHZXRJbnZlbnRvcnlFbmRwb2ludAp7CiAgICAvLy8gPHN1bW1hcnk+UmV0dXJucyBwZXQgaW52ZW50b3JpZXMgYnkgc3RhdHVzPC9zdW1tYXJ5PgogICAgLy8vIDxyZW1hcmtzPlJldHVybnMgYSBtYXAgb2Ygc3RhdHVzIGNvZGVzIHRvIHF1YW50aXRpZXM8L3JlbWFya3M+CiAgICAvLy8gPHJldHVybnM+c3VjY2Vzc2Z1bCBvcGVyYXRpb248L3JldHVybnM+CiAgICAvLy8gPGV4Y2VwdGlvbiBjcmVmPSJBcGlFeGNlcHRpb24iPlRocm93biB3aGVuIHRoZSByZXF1ZXN0IHJldHVybnMgYSBub24tc3VjY2VzcyBzdGF0dXMgY29kZS48L2V4Y2VwdGlvbj4KICAgIFtIZWFkZXJzKCJBY2NlcHQ6IGFwcGxpY2F0aW9uL2pzb24iKV0KICAgIFtHZXQoIi9zdG9yZS9pbnZlbnRvcnkiKV0KICAgIFRhc2s8SURpY3Rpb25hcnk8c3RyaW5nLCBpbnQ+PiBFeGVjdXRlKCk7Cn0KCi8vLyA8c3VtbWFyeT5QbGFjZSBhbiBvcmRlciBmb3IgYSBwZXQ8L3N1bW1hcnk+CltTeXN0ZW0uQ29kZURvbS5Db21waWxlci5HZW5lcmF0ZWRDb2RlKCJSZWZpdHRlciIsICIxLjAuMC4wIildCnB1YmxpYyBwYXJ0aWFsIGludGVyZmFjZSBJUGxhY2VPcmRlckVuZHBvaW50CnsKICAgIC8vLyA8c3VtbWFyeT5QbGFjZSBhbiBvcmRlciBmb3IgYSBwZXQ8L3N1bW1hcnk+CiAgICAvLy8gPHJlbWFya3M+UGxhY2UgYSBuZXcgb3JkZXIgaW4gdGhlIHN0b3JlPC9yZW1hcmtzPgogICAgLy8vIDxyZXR1cm5zPnN1Y2Nlc3NmdWwgb3BlcmF0aW9uPC9yZXR1cm5zPgogICAgLy8vIDxleGNlcHRpb24gY3JlZj0iQXBpRXhjZXB0aW9uIj4KICAgIC8vLyBUaHJvd24gd2hlbiB0aGUgcmVxdWVzdCByZXR1cm5zIGEgbm9uLXN1Y2Nlc3Mgc3RhdHVzIGNvZGU6CiAgICAvLy8gPGxpc3QgdHlwZT0idGFibGUiPgogICAgLy8vIDxsaXN0aGVhZGVyPgogICAgLy8vIDx0ZXJtPlN0YXR1czwvdGVybT4KICAgIC8vLyA8ZGVzY3JpcHRpb24+RGVzY3JpcHRpb248L2Rlc2NyaXB0aW9uPgogICAgLy8vIDwvbGlzdGhlYWRlcj4KICAgIC8vLyA8aXRlbT4KICAgIC8vLyA8dGVybT40MDU8L3Rlcm0+CiAgICAvLy8gPGRlc2NyaXB0aW9uPkludmFsaWQgaW5wdXQ8L2Rlc2NyaXB0aW9uPgogICAgLy8vIDwvaXRlbT4KICAgIC8vLyA8L2xpc3Q+CiAgICAvLy8gPC9leGNlcHRpb24+CiAgICBbSGVhZGVycygiQWNjZXB0OiBhcHBsaWNhdGlvbi9qc29uIildCiAgICBbUG9zdCgiL3N0b3JlL29yZGVyIildCiAgICBUYXNrPE9yZGVyPiBFeGVjdXRlKFtCb2R5XSBPcmRlciBib2R5KTsKfQoKLy8vIDxzdW1tYXJ5PkZpbmQgcHVyY2hhc2Ugb3JkZXIgYnkgSUQ8L3N1bW1hcnk+CltTeXN0ZW0uQ29kZURvbS5Db21waWxlci5HZW5lcmF0ZWRDb2RlKCJSZWZpdHRlciIsICIxLjAuMC4wIildCnB1YmxpYyBwYXJ0aWFsIGludGVyZmFjZSBJR2V0T3JkZXJCeUlkRW5kcG9pbnQKewogICAgLy8vIDxzdW1tYXJ5PkZpbmQgcHVyY2hhc2Ugb3JkZXIgYnkgSUQ8L3N1bW1hcnk+CiAgICAvLy8gPHJlbWFya3M+Rm9yIHZhbGlkIHJlc3BvbnNlIHRyeSBpbnRlZ2VyIElEcyB3aXRoIHZhbHVlIDw9IDUgb3IgPiAxMC4gT3RoZXIgdmFsdWVzIHdpbGwgZ2VuZXJhdGVkIGV4Y2VwdGlvbnM8L3JlbWFya3M+CiAgICAvLy8gPHBhcmFtIG5hbWU9Im9yZGVySWQiPklEIG9mIG9yZGVyIHRoYXQgbmVlZHMgdG8gYmUgZmV0Y2hlZDwvcGFyYW0+CiAgICAvLy8gPHJldHVybnM+c3VjY2Vzc2Z1bCBvcGVyYXRpb248L3JldHVybnM+CiAgICAvLy8gPGV4Y2VwdGlvbiBjcmVmPSJBcGlFeGNlcHRpb24iPgogICAgLy8vIFRocm93biB3aGVuIHRoZSByZXF1ZXN0IHJldHVybnMgYSBub24tc3VjY2VzcyBzdGF0dXMgY29kZToKICAgIC8vLyA8bGlzdCB0eXBlPSJ0YWJsZSI+CiAgICAvLy8gPGxpc3RoZWFkZXI+CiAgICAvLy8gPHRlcm0+U3RhdHVzPC90ZXJtPgogICAgLy8vIDxkZXNjcmlwdGlvbj5EZXNjcmlwdGlvbjwvZGVzY3JpcHRpb24+CiAgICAvLy8gPC9saXN0aGVhZGVyPgogICAgLy8vIDxpdGVtPgogICAgLy8vIDx0ZXJtPjQwMDwvdGVybT4KICAgIC8vLyA8ZGVzY3JpcHRpb24+SW52YWxpZCBJRCBzdXBwbGllZDwvZGVzY3JpcHRpb24+CiAgICAvLy8gPC9pdGVtPgogICAgLy8vIDxpdGVtPgogICAgLy8vIDx0ZXJtPjQwNDwvdGVybT4KICAgIC8vLyA8ZGVzY3JpcHRpb24+T3JkZXIgbm90IGZvdW5kPC9kZXNjcmlwdGlvbj4KICAgIC8vLyA8L2l0ZW0+CiAgICAvLy8gPC9saXN0PgogICAgLy8vIDwvZXhjZXB0aW9uPgogICAgW0hlYWRlcnMoIkFjY2VwdDogYXBwbGljYXRpb24vanNvbiIpXQogICAgW0dldCgiL3N0b3JlL29yZGVyL3tvcmRlcklkfSIpXQogICAgVGFzazxPcmRlcj4gRXhlY3V0ZShsb25nIG9yZGVySWQpOwp9CgovLy8gPHN1bW1hcnk+RGVsZXRlIHB1cmNoYXNlIG9yZGVyIGJ5IElEPC9zdW1tYXJ5PgpbU3lzdGVtLkNvZGVEb20uQ29tcGlsZXIuR2VuZXJhdGVkQ29kZSgiUmVmaXR0ZXIiLCAiMS4wLjAuMCIpXQpwdWJsaWMgcGFydGlhbCBpbnRlcmZhY2UgSURlbGV0ZU9yZGVyRW5kcG9pbnQKewogICAgLy8vIDxzdW1tYXJ5PkRlbGV0ZSBwdXJjaGFzZSBvcmRlciBieSBJRDwvc3VtbWFyeT4KICAgIC8vLyA8cmVtYXJrcz5Gb3IgdmFsaWQgcmVzcG9uc2UgdHJ5IGludGVnZXIgSURzIHdpdGggdmFsdWUgPCAxMDAwLiBBbnl0aGluZyBhYm92ZSAxMDAwIG9yIG5vbmludGVnZXJzIHdpbGwgZ2VuZXJhdGUgQVBJIGVycm9yczwvcmVtYXJrcz4KICAgIC8vLyA8cGFyYW0gbmFtZT0ib3JkZXJJZCI+SUQgb2YgdGhlIG9yZGVyIHRoYXQgbmVlZHMgdG8gYmUgZGVsZXRlZDwvcGFyYW0+CiAgICAvLy8gPHJldHVybnM+QSA8c2VlIGNyZWY9IlRhc2siLz4gdGhhdCBjb21wbGV0ZXMgd2hlbiB0aGUgcmVxdWVzdCBpcyBmaW5pc2hlZC48L3JldHVybnM+CiAgICAvLy8gPGV4Y2VwdGlvbiBjcmVmPSJBcGlFeGNlcHRpb24iPgogICAgLy8vIFRocm93biB3aGVuIHRoZSByZXF1ZXN0IHJldHVybnMgYSBub24tc3VjY2VzcyBzdGF0dXMgY29kZToKICAgIC8vLyA8bGlzdCB0eXBlPSJ0YWJsZSI+CiAgICAvLy8gPGxpc3RoZWFkZXI+CiAgICAvLy8gPHRlcm0+U3RhdHVzPC90ZXJtPgogICAgLy8vIDxkZXNjcmlwdGlvbj5EZXNjcmlwdGlvbjwvZGVzY3JpcHRpb24+CiAgICAvLy8gPC9saXN0aGVhZGVyPgogICAgLy8vIDxpdGVtPgogICAgLy8vIDx0ZXJtPjQwMDwvdGVybT4KICAgIC8vLyA8ZGVzY3JpcHRpb24+SW52YWxpZCBJRCBzdXBwbGllZDwvZGVzY3JpcHRpb24+CiAgICAvLy8gPC9pdGVtPgogICAgLy8vIDxpdGVtPgogICAgLy8vIDx0ZXJtPjQwNDwvdGVybT4KICAgIC8vLyA8ZGVzY3JpcHRpb24+T3JkZXIgbm90IGZvdW5kPC9kZXNjcmlwdGlvbj4KICAgIC8vLyA8L2l0ZW0+CiAgICAvLy8gPC9saXN0PgogICAgLy8vIDwvZXhjZXB0aW9uPgogICAgW0RlbGV0ZSgiL3N0b3JlL29yZGVyL3tvcmRlcklkfSIpXQogICAgVGFzayBFeGVjdXRlKGxvbmcgb3JkZXJJZCk7Cn0KCi8vLyA8c3VtbWFyeT5DcmVhdGUgdXNlcjwvc3VtbWFyeT4KW1N5c3RlbS5Db2RlRG9tLkNvbXBpbGVyLkdlbmVyYXRlZENvZGUoIlJlZml0dGVyIiwgIjEuMC4wLjAiKV0KcHVibGljIHBhcnRpYWwgaW50ZXJmYWNlIElDcmVhdGVVc2VyRW5kcG9pbnQKewogICAgLy8vIDxzdW1tYXJ5PkNyZWF0ZSB1c2VyPC9zdW1tYXJ5PgogICAgLy8vIDxyZW1hcmtzPlRoaXMgY2FuIG9ubHkgYmUgZG9uZSBieSB0aGUgbG9nZ2VkIGluIHVzZXIuPC9yZW1hcmtzPgogICAgLy8vIDxwYXJhbSBuYW1lPSJib2R5Ij5DcmVhdGVkIHVzZXIgb2JqZWN0PC9wYXJhbT4KICAgIC8vLyA8cmV0dXJucz5zdWNjZXNzZnVsIG9wZXJhdGlvbjwvcmV0dXJucz4KICAgIC8vLyA8ZXhjZXB0aW9uIGNyZWY9IkFwaUV4Y2VwdGlvbiI+VGhyb3duIHdoZW4gdGhlIHJlcXVlc3QgcmV0dXJucyBhIG5vbi1zdWNjZXNzIHN0YXR1cyBjb2RlLjwvZXhjZXB0aW9uPgogICAgW0hlYWRlcnMoIkFjY2VwdDogYXBwbGljYXRpb24vanNvbiwgYXBwbGljYXRpb24veG1sIildCiAgICBbUG9zdCgiL3VzZXIiKV0KICAgIFRhc2sgRXhlY3V0ZShbQm9keV0gVXNlciBib2R5KTsKfQoKLy8vIDxzdW1tYXJ5PkNyZWF0ZXMgbGlzdCBvZiB1c2VycyB3aXRoIGdpdmVuIGlucHV0IGFycmF5PC9zdW1tYXJ5PgpbU3lzdGVtLkNvZGVEb20uQ29tcGlsZXIuR2VuZXJhdGVkQ29kZSgiUmVmaXR0ZXIiLCAiMS4wLjAuMCIpXQpwdWJsaWMgcGFydGlhbCBpbnRlcmZhY2UgSUNyZWF0ZVVzZXJzV2l0aExpc3RJbnB1dEVuZHBvaW50CnsKICAgIC8vLyA8c3VtbWFyeT5DcmVhdGVzIGxpc3Qgb2YgdXNlcnMgd2l0aCBnaXZlbiBpbnB1dCBhcnJheTwvc3VtbWFyeT4KICAgIC8vLyA8cmVtYXJrcz5DcmVhdGVzIGxpc3Qgb2YgdXNlcnMgd2l0aCBnaXZlbiBpbnB1dCBhcnJheTwvcmVtYXJrcz4KICAgIC8vLyA8cmV0dXJucz5TdWNjZXNzZnVsIG9wZXJhdGlvbjwvcmV0dXJucz4KICAgIC8vLyA8ZXhjZXB0aW9uIGNyZWY9IkFwaUV4Y2VwdGlvbiI+VGhyb3duIHdoZW4gdGhlIHJlcXVlc3QgcmV0dXJucyBhIG5vbi1zdWNjZXNzIHN0YXR1cyBjb2RlLjwvZXhjZXB0aW9uPgogICAgW0hlYWRlcnMoIkFjY2VwdDogYXBwbGljYXRpb24veG1sLCBhcHBsaWNhdGlvbi9qc29uIildCiAgICBbUG9zdCgiL3VzZXIvY3JlYXRlV2l0aExpc3QiKV0KICAgIFRhc2s8VXNlcj4gRXhlY3V0ZShbQm9keV0gSUVudW1lcmFibGU8VXNlcj4gYm9keSk7Cn0KCi8vLyA8c3VtbWFyeT5Mb2dzIHVzZXIgaW50byB0aGUgc3lzdGVtPC9zdW1tYXJ5PgpbU3lzdGVtLkNvZGVEb20uQ29tcGlsZXIuR2VuZXJhdGVkQ29kZSgiUmVmaXR0ZXIiLCAiMS4wLjAuMCIpXQpwdWJsaWMgcGFydGlhbCBpbnRlcmZhY2UgSUxvZ2luVXNlckVuZHBvaW50CnsKICAgIC8vLyA8c3VtbWFyeT5Mb2dzIHVzZXIgaW50byB0aGUgc3lzdGVtPC9zdW1tYXJ5PgogICAgLy8vIDxwYXJhbSBuYW1lPSJ1c2VybmFtZSI+VGhlIHVzZXIgbmFtZSBmb3IgbG9naW48L3BhcmFtPgogICAgLy8vIDxwYXJhbSBuYW1lPSJwYXNzd29yZCI+VGhlIHBhc3N3b3JkIGZvciBsb2dpbiBpbiBjbGVhciB0ZXh0PC9wYXJhbT4KICAgIC8vLyA8cmV0dXJucz5zdWNjZXNzZnVsIG9wZXJhdGlvbjwvcmV0dXJucz4KICAgIC8vLyA8ZXhjZXB0aW9uIGNyZWY9IkFwaUV4Y2VwdGlvbiI+CiAgICAvLy8gVGhyb3duIHdoZW4gdGhlIHJlcXVlc3QgcmV0dXJucyBhIG5vbi1zdWNjZXNzIHN0YXR1cyBjb2RlOgogICAgLy8vIDxsaXN0IHR5cGU9InRhYmxlIj4KICAgIC8vLyA8bGlzdGhlYWRlcj4KICAgIC8vLyA8dGVybT5TdGF0dXM8L3Rlcm0+CiAgICAvLy8gPGRlc2NyaXB0aW9uPkRlc2NyaXB0aW9uPC9kZXNjcmlwdGlvbj4KICAgIC8vLyA8L2xpc3RoZWFkZXI+CiAgICAvLy8gPGl0ZW0+CiAgICAvLy8gPHRlcm0+NDAwPC90ZXJtPgogICAgLy8vIDxkZXNjcmlwdGlvbj5JbnZhbGlkIHVzZXJuYW1lL3Bhc3N3b3JkIHN1cHBsaWVkPC9kZXNjcmlwdGlvbj4KICAgIC8vLyA8L2l0ZW0+CiAgICAvLy8gPC9saXN0PgogICAgLy8vIDwvZXhjZXB0aW9uPgogICAgW0hlYWRlcnMoIkFjY2VwdDogYXBwbGljYXRpb24vanNvbiIpXQogICAgW0dldCgiL3VzZXIvbG9naW4iKV0KICAgIFRhc2s8c3RyaW5nPiBFeGVjdXRlKFtRdWVyeV0gc3RyaW5nIHVzZXJuYW1lLCBbUXVlcnldIHN0cmluZyBwYXNzd29yZCk7Cn0KCi8vLyA8c3VtbWFyeT5Mb2dzIG91dCBjdXJyZW50IGxvZ2dlZCBpbiB1c2VyIHNlc3Npb248L3N1bW1hcnk+CltTeXN0ZW0uQ29kZURvbS5Db21waWxlci5HZW5lcmF0ZWRDb2RlKCJSZWZpdHRlciIsICIxLjAuMC4wIildCnB1YmxpYyBwYXJ0aWFsIGludGVyZmFjZSBJTG9nb3V0VXNlckVuZHBvaW50CnsKICAgIC8vLyA8c3VtbWFyeT5Mb2dzIG91dCBjdXJyZW50IGxvZ2dlZCBpbiB1c2VyIHNlc3Npb248L3N1bW1hcnk+CiAgICAvLy8gPHJldHVybnM+QSA8c2VlIGNyZWY9IlRhc2siLz4gdGhhdCBjb21wbGV0ZXMgd2hlbiB0aGUgcmVxdWVzdCBpcyBmaW5pc2hlZC48L3JldHVybnM+CiAgICAvLy8gPGV4Y2VwdGlvbiBjcmVmPSJBcGlFeGNlcHRpb24iPlRocm93biB3aGVuIHRoZSByZXF1ZXN0IHJldHVybnMgYSBub24tc3VjY2VzcyBzdGF0dXMgY29kZS48L2V4Y2VwdGlvbj4KICAgIFtHZXQoIi91c2VyL2xvZ291dCIpXQogICAgVGFzayBFeGVjdXRlKCk7Cn0KCi8vLyA8c3VtbWFyeT5HZXQgdXNlciBieSB1c2VyIG5hbWU8L3N1bW1hcnk+CltTeXN0ZW0uQ29kZURvbS5Db21waWxlci5HZW5lcmF0ZWRDb2RlKCJSZWZpdHRlciIsICIxLjAuMC4wIildCnB1YmxpYyBwYXJ0aWFsIGludGVyZmFjZSBJR2V0VXNlckJ5TmFtZUVuZHBvaW50CnsKICAgIC8vLyA8c3VtbWFyeT5HZXQgdXNlciBieSB1c2VyIG5hbWU8L3N1bW1hcnk+CiAgICAvLy8gPHBhcmFtIG5hbWU9InVzZXJuYW1lIj5UaGUgbmFtZSB0aGF0IG5lZWRzIHRvIGJlIGZldGNoZWQuIFVzZSB1c2VyMSBmb3IgdGVzdGluZy48L3BhcmFtPgogICAgLy8vIDxyZXR1cm5zPnN1Y2Nlc3NmdWwgb3BlcmF0aW9uPC9yZXR1cm5zPgogICAgLy8vIDxleGNlcHRpb24gY3JlZj0iQXBpRXhjZXB0aW9uIj4KICAgIC8vLyBUaHJvd24gd2hlbiB0aGUgcmVxdWVzdCByZXR1cm5zIGEgbm9uLXN1Y2Nlc3Mgc3RhdHVzIGNvZGU6CiAgICAvLy8gPGxpc3QgdHlwZT0idGFibGUiPgogICAgLy8vIDxsaXN0aGVhZGVyPgogICAgLy8vIDx0ZXJtPlN0YXR1czwvdGVybT4KICAgIC8vLyA8ZGVzY3JpcHRpb24+RGVzY3JpcHRpb248L2Rlc2NyaXB0aW9uPgogICAgLy8vIDwvbGlzdGhlYWRlcj4KICAgIC8vLyA8aXRlbT4KICAgIC8vLyA8dGVybT40MDA8L3Rlcm0+CiAgICAvLy8gPGRlc2NyaXB0aW9uPkludmFsaWQgdXNlcm5hbWUgc3VwcGxpZWQ8L2Rlc2NyaXB0aW9uPgogICAgLy8vIDwvaXRlbT4KICAgIC8vLyA8aXRlbT4KICAgIC8vLyA8dGVybT40MDQ8L3Rlcm0+CiAgICAvLy8gPGRlc2NyaXB0aW9uPlVzZXIgbm90IGZvdW5kPC9kZXNjcmlwdGlvbj4KICAgIC8vLyA8L2l0ZW0+CiAgICAvLy8gPC9saXN0PgogICAgLy8vIDwvZXhjZXB0aW9uPgogICAgW0hlYWRlcnMoIkFjY2VwdDogYXBwbGljYXRpb24vanNvbiIpXQogICAgW0dldCgiL3VzZXIve3VzZXJuYW1lfSIpXQogICAgVGFzazxVc2VyPiBFeGVjdXRlKHN0cmluZyB1c2VybmFtZSk7Cn0KCi8vLyA8c3VtbWFyeT5VcGRhdGUgdXNlcjwvc3VtbWFyeT4KW1N5c3RlbS5Db2RlRG9tLkNvbXBpbGVyLkdlbmVyYXRlZENvZGUoIlJlZml0dGVyIiwgIjEuMC4wLjAiKV0KcHVibGljIHBhcnRpYWwgaW50ZXJmYWNlIElVcGRhdGVVc2VyRW5kcG9pbnQKewogICAgLy8vIDxzdW1tYXJ5PlVwZGF0ZSB1c2VyPC9zdW1tYXJ5PgogICAgLy8vIDxyZW1hcmtzPlRoaXMgY2FuIG9ubHkgYmUgZG9uZSBieSB0aGUgbG9nZ2VkIGluIHVzZXIuPC9yZW1hcmtzPgogICAgLy8vIDxwYXJhbSBuYW1lPSJ1c2VybmFtZSI+bmFtZSB0aGF0IG5lZWQgdG8gYmUgZGVsZXRlZDwvcGFyYW0+CiAgICAvLy8gPHBhcmFtIG5hbWU9ImJvZHkiPlVwZGF0ZSBhbiBleGlzdGVudCB1c2VyIGluIHRoZSBzdG9yZTwvcGFyYW0+CiAgICAvLy8gPHJldHVybnM+QSA8c2VlIGNyZWY9IlRhc2siLz4gdGhhdCBjb21wbGV0ZXMgd2hlbiB0aGUgcmVxdWVzdCBpcyBmaW5pc2hlZC48L3JldHVybnM+CiAgICAvLy8gPGV4Y2VwdGlvbiBjcmVmPSJBcGlFeGNlcHRpb24iPlRocm93biB3aGVuIHRoZSByZXF1ZXN0IHJldHVybnMgYSBub24tc3VjY2VzcyBzdGF0dXMgY29kZS48L2V4Y2VwdGlvbj4KICAgIFtQdXQoIi91c2VyL3t1c2VybmFtZX0iKV0KICAgIFRhc2sgRXhlY3V0ZShzdHJpbmcgdXNlcm5hbWUsIFtCb2R5XSBVc2VyIGJvZHkpOwp9CgovLy8gPHN1bW1hcnk+RGVsZXRlIHVzZXI8L3N1bW1hcnk+CltTeXN0ZW0uQ29kZURvbS5Db21waWxlci5HZW5lcmF0ZWRDb2RlKCJSZWZpdHRlciIsICIxLjAuMC4wIildCnB1YmxpYyBwYXJ0aWFsIGludGVyZmFjZSBJRGVsZXRlVXNlckVuZHBvaW50CnsKICAgIC8vLyA8c3VtbWFyeT5EZWxldGUgdXNlcjwvc3VtbWFyeT4KICAgIC8vLyA8cmVtYXJrcz5UaGlzIGNhbiBvbmx5IGJlIGRvbmUgYnkgdGhlIGxvZ2dlZCBpbiB1c2VyLjwvcmVtYXJrcz4KICAgIC8vLyA8cGFyYW0gbmFtZT0idXNlcm5hbWUiPlRoZSBuYW1lIHRoYXQgbmVlZHMgdG8gYmUgZGVsZXRlZDwvcGFyYW0+CiAgICAvLy8gPHJldHVybnM+QSA8c2VlIGNyZWY9IlRhc2siLz4gdGhhdCBjb21wbGV0ZXMgd2hlbiB0aGUgcmVxdWVzdCBpcyBmaW5pc2hlZC48L3JldHVybnM+CiAgICAvLy8gPGV4Y2VwdGlvbiBjcmVmPSJBcGlFeGNlcHRpb24iPgogICAgLy8vIFRocm93biB3aGVuIHRoZSByZXF1ZXN0IHJldHVybnMgYSBub24tc3VjY2VzcyBzdGF0dXMgY29kZToKICAgIC8vLyA8bGlzdCB0eXBlPSJ0YWJsZSI+CiAgICAvLy8gPGxpc3RoZWFkZXI+CiAgICAvLy8gPHRlcm0+U3RhdHVzPC90ZXJtPgogICAgLy8vIDxkZXNjcmlwdGlvbj5EZXNjcmlwdGlvbjwvZGVzY3JpcHRpb24+CiAgICAvLy8gPC9saXN0aGVhZGVyPgogICAgLy8vIDxpdGVtPgogICAgLy8vIDx0ZXJtPjQwMDwvdGVybT4KICAgIC8vLyA8ZGVzY3JpcHRpb24+SW52YWxpZCB1c2VybmFtZSBzdXBwbGllZDwvZGVzY3JpcHRpb24+CiAgICAvLy8gPC9pdGVtPgogICAgLy8vIDxpdGVtPgogICAgLy8vIDx0ZXJtPjQwNDwvdGVybT4KICAgIC8vLyA8ZGVzY3JpcHRpb24+VXNlciBub3QgZm91bmQ8L2Rlc2NyaXB0aW9uPgogICAgLy8vIDwvaXRlbT4KICAgIC8vLyA8L2xpc3Q+CiAgICAvLy8gPC9leGNlcHRpb24+CiAgICBbRGVsZXRlKCIvdXNlci97dXNlcm5hbWV9IildCiAgICBUYXNrIEV4ZWN1dGUoc3RyaW5nIHVzZXJuYW1lKTsKfQpgYGAKCiMjIFJlc3RTZXJ2aWNlCgpIZXJlJ3MgYW4gZXhhbXBsZSB1c2FnZSBvZiB0aGUgZ2VuZXJhdGVkIGNvZGUgYWJvdmUKCmBgYGNzCnVzaW5nIFJlZml0Owp1c2luZyBTeXN0ZW07CnVzaW5nIFN5c3RlbS5UaHJlYWRpbmcuVGFza3M7CgpuYW1lc3BhY2UgWW91ci5OYW1lc3BhY2UuT2YuQ2hvaWNlLkdlbmVyYXRlZENvZGU7CgppbnRlcm5hbCBjbGFzcyBQcm9ncmFtCnsKICAgIHByaXZhdGUgc3RhdGljIGFzeW5jIFRhc2sgTWFpbihzdHJpbmdbXSBhcmdzKQogICAgewogICAgICAgIHZhciBjbGllbnQgPSBSZXN0U2VydmljZS5Gb3I8SVN3YWdnZXJQZXRzdG9yZT4oImh0dHBzOi8vcGV0c3RvcmUzLnN3YWdnZXIuaW8vYXBpL3YzIik7CiAgICAgICAgdmFyIHBldCA9IGF3YWl0IGNsaWVudC5HZXRQZXRCeUlkKDEpOwoKICAgICAgICBDb25zb2xlLldyaXRlTGluZSgiIyMgVXNpbmcgVGFzazxUPiBhcyByZXR1cm4gdHlwZSAjIyIpOwogICAgICAgIENvbnNvbGUuV3JpdGVMaW5lKCQiTmFtZToge3BldC5OYW1lfSIpOwogICAgICAgIENvbnNvbGUuV3JpdGVMaW5lKCQiQ2F0ZWdvcnk6IHtwZXQuQ2F0ZWdvcnkuTmFtZX0iKTsKICAgICAgICBDb25zb2xlLldyaXRlTGluZSgkIlN0YXR1czoge3BldC5TdGF0dXN9Iik7CiAgICAgICAgQ29uc29sZS5Xcml0ZUxpbmUoKTsKCiAgICAgICAgdmFyIGNsaWVudDIgPSBSZXN0U2VydmljZS5Gb3I8V2l0aEFwaVJlc3BvbnNlLklTd2FnZ2VyUGV0c3RvcmU+KCJodHRwczovL3BldHN0b3JlMy5zd2FnZ2VyLmlvL2FwaS92MyIpOwogICAgICAgIHZhciByZXNwb25zZSA9IGF3YWl0IGNsaWVudDIuR2V0UGV0QnlJZCgyKTsKCiAgICAgICAgQ29uc29sZS5Xcml0ZUxpbmUoIiMjIFVzaW5nIFRhc2s8SUFwaVJlc3BvbnNlPFQ+PiBhcyByZXR1cm4gdHlwZSAjIyIpOwogICAgICAgIENvbnNvbGUuV3JpdGVMaW5lKCQiSFRUUCBTdGF0dXMgQ29kZToge3Jlc3BvbnNlLlN0YXR1c0NvZGV9Iik7CiAgICAgICAgQ29uc29sZS5Xcml0ZUxpbmUoJCJOYW1lOiB7cmVzcG9uc2UuQ29udGVudC5OYW1lfSIpOwogICAgICAgIENvbnNvbGUuV3JpdGVMaW5lKCQiQ2F0ZWdvcnk6IHtyZXNwb25zZS5Db250ZW50LkNhdGVnb3J5Lk5hbWV9Iik7CiAgICAgICAgQ29uc29sZS5Xcml0ZUxpbmUoJCJTdGF0dXM6IHtyZXNwb25zZS5Db250ZW50LlN0YXR1c30iKTsKICAgIH0KfQpgYGAKClRoZSBgUmVzdFNlcnZpY2VgIGNsYXNzIGdlbmVyYXRlcyBhbiBpbXBsZW1lbnRhdGlvbiBvZiBgSVN3YWdnZXJQZXRzdG9yZWAgdGhhdCB1c2VzIGBIdHRwQ2xpZW50YCB0byBtYWtlIGl0cyBjYWxscy4gCgpUaGUgY29kZSBhYm92ZSB3aGVuIHJ1biB3aWxsIG91dHB1dCBzb21ldGhpbmcgbGlrZSB0aGlzOgoKYGBgCiMjIFVzaW5nIFRhc2s8VD4gYXMgcmV0dXJuIHR5cGUgIyMKTmFtZTogR2F0aXRvdG90b3RvCkNhdGVnb3J5OiBDaGF1Y2l0bwpTdGF0dXM6IFNvbGQKCiMjIFVzaW5nIFRhc2s8SUFwaVJlc3BvbnNlPFQ+PiBhcyByZXR1cm4gdHlwZSAjIwpIVFRQIFN0YXR1cyBDb2RlOiBPSwpOYW1lOiBHYXRpdG90b3RvdG8KQ2F0ZWdvcnk6IENoYXVjaXRvClN0YXR1czogU29sZApgYGAKCiMjIEFTUC5ORVQgQ29yZSBhbmQgSHR0cENsaWVudEZhY3RvcnkKCkhlcmUncyBhbiBleGFtcGxlIE1pbmltYWwgQVBJIHdpdGggdGhlIFtgUmVmaXQuSHR0cENsaWVudEZhY3RvcnlgXShodHRwczovL3d3dy5udWdldC5vcmcvcGFja2FnZXMvUmVmaXQuSHR0cENsaWVudEZhY3RvcnkpIGxpYnJhcnk6CgpgYGBjcwp1c2luZyBSZWZpdDsKdXNpbmcgWW91ci5OYW1lc3BhY2UuT2YuQ2hvaWNlLkdlbmVyYXRlZENvZGU7Cgp2YXIgYnVpbGRlciA9IFdlYkFwcGxpY2F0aW9uLkNyZWF0ZUJ1aWxkZXIoYXJncyk7CmJ1aWxkZXIuU2VydmljZXMuQWRkRW5kcG9pbnRzQXBpRXhwbG9yZXIoKTsKYnVpbGRlci5TZXJ2aWNlcy5BZGRTd2FnZ2VyR2VuKCk7CmJ1aWxkZXIuU2VydmljZXMKICAgIC5BZGRSZWZpdENsaWVudDxJU3dhZ2dlclBldHN0b3JlPigpCiAgICAuQ29uZmlndXJlSHR0cENsaWVudChjID0+IGMuQmFzZUFkZHJlc3MgPSBuZXcgVXJpKCJodHRwczovL3BldHN0b3JlMy5zd2FnZ2VyLmlvL2FwaS92MyIpKTsKCnZhciBhcHAgPSBidWlsZGVyLkJ1aWxkKCk7CmFwcC5NYXBHZXQoCiAgICAgICAgIi9wZXQve2lkOmxvbmd9IiwKICAgICAgICBhc3luYyAoSVN3YWdnZXJQZXRzdG9yZSBwZXRzdG9yZSwgbG9uZyBpZCkgPT4KICAgICAgICB7CiAgICAgICAgICAgIHRyeQogICAgICAgICAgICB7CiAgICAgICAgICAgICAgICByZXR1cm4gUmVzdWx0cy5Payhhd2FpdCBwZXRzdG9yZS5HZXRQZXRCeUlkKGlkKSk7CiAgICAgICAgICAgIH0KICAgICAgICAgICAgY2F0Y2ggKFJlZml0LkFwaUV4Y2VwdGlvbiBlKQogICAgICAgICAgICB7CiAgICAgICAgICAgICAgICByZXR1cm4gUmVzdWx0cy5TdGF0dXNDb2RlKChpbnQpZS5TdGF0dXNDb2RlKTsKICAgICAgICAgICAgfQogICAgICAgIH0pCiAgICAuV2l0aE5hbWUoIkdldFBldEJ5SWQiKQogICAgLldpdGhPcGVuQXBpKCk7CgphcHAuVXNlSHR0cHNSZWRpcmVjdGlvbigpOwphcHAuVXNlU3dhZ2dlclVJKCk7CmFwcC5Vc2VTd2FnZ2VyKCk7CmFwcC5SdW4oKTsKYGBgCgoKLk5FVCBDb3JlIHN1cHBvcnRzIHJlZ2lzdGVyaW5nIHRoZSBnZW5lcmF0ZWQgYElTd2FnZ2VyUGV0c3RvcmVgIGludGVyZmFjZSB2aWEgYEh0dHBDbGllbnRGYWN0b3J5YAoKVGhlIGZvbGxvd2luZyByZXF1ZXN0IHRvIHRoZSBBUEkgYWJvdmUKYGBgc2hlbGwKJCBjdXJsIC1YICdHRVQnICdodHRwczovL2xvY2FsaG9zdDo1MDAxL3BldC8xJyAtSCAnYWNjZXB0OiBhcHBsaWNhdGlvbi9qc29uJwpgYGAKClJldHVybnMgYSByZXNwb25zZSB0aGF0IGxvb2tzIHNvbWV0aGluZyBsaWtlIHRoaXM6CmBgYGpzb24KewogICJpZCI6IDEsCiAgIm5hbWUiOiAiU3BlY2lhbF9jaGFyX293bmVyXyFAIyReJigpYC50ZXN0aW5nIiwKICAicGhvdG9VcmxzIjogWwogICAgImh0dHBzOi8vcGV0c3RvcmUzLnN3YWdnZXIuaW8vcmVzb3VyY2VzL3Bob3Rvcy82MjMzODkwOTUuanBnIgogIF0sCiAgInRhZ3MiOiBbXSwKICAic3RhdHVzIjogIlNvbGQiCn0KYGBgCgojIyBEZXBlbmRlbmN5IEluamVjdGlvbgoKUmVmaXR0ZXIgc3VwcG9ydHMgZ2VuZXJhdGluZyBib290c3RyYXBwaW5nIGNvZGUgdGhhdCBhbGxvd3MgdGhlIHVzZXIgdG8gY29udmVuaWVudGx5IGNvbmZpZ3VyZSBhbGwgZ2VuZXJhdGVkIFJlZml0IGludGVyZmFjZXMgYnkgY2FsbGluZyBhIHNpbmdsZSBleHRlbnNpb24gbWV0aG9kIHRvIGBJU2VydmljZUNvbGxlY3Rpb25gLgoKVGhpcyBpcyBlbmFibGVkIHRocm91Z2ggdGhlIGAucmVmaXR0ZXJgIHNldHRpbmdzIGZpbGUgbGlrZSB0aGlzOgoKYGBganNvbgp7CiAgIm9wZW5BcGlQYXRoIjogIi4uL09wZW5BUEkvdjMuMC9wZXRzdG9yZS5qc29uIiwKICAibmFtZXNwYWNlIjogIlBldHN0b3JlIiwKICAiZGVwZW5kZW5jeUluamVjdGlvblNldHRpbmdzIjogewogICAgImJhc2VVcmwiOiAiaHR0cHM6Ly9wZXRzdG9yZTMuc3dhZ2dlci5pby9hcGkvdjMiLAogICAgImh0dHBNZXNzYWdlSGFuZGxlcnMiOiBbICJUZWxlbWV0cnlEZWxlZ2F0aW5nSGFuZGxlciIgXSwKICAgICJ0cmFuc2llbnRFcnJvckhhbmRsZXIiOiAiUG9sbHkiLAogICAgIm1heFJldHJ5Q291bnQiOiAzLAogICAgImZpcnN0QmFja29mZlJldHJ5SW5TZWNvbmRzIjogMC41CiAgfQp9CmBgYAoKd2hpY2ggd2lsbCBnZW5lcmF0ZSBhbiBleHRlbnNpb24gbWV0aG9kIHRvIGBJU2VydmljZUNvbGxlY3Rpb25gIGNhbGxlZCBgQ29uZmlndXJlUmVmaXRDbGllbnRzKClgLiBUaGUgZ2VuZXJhdGVkIGV4dGVuc2lvbiBtZXRob2QgZGVwZW5kcyBvbiBbYFJlZml0Lkh0dHBDbGllbnRGYWN0b3J5YF0oaHR0cHM6Ly93d3cubnVnZXQub3JnL3BhY2thZ2VzL1JlZml0Lkh0dHBDbGllbnRGYWN0b3J5KSBsaWJyYXJ5IGFuZCBsb29rcyBsaWtlIHRoaXM6CgpgYGBjcwpwdWJsaWMgc3RhdGljIElTZXJ2aWNlQ29sbGVjdGlvbiBDb25maWd1cmVSZWZpdENsaWVudHMoCiAgICB0aGlzIElTZXJ2aWNlQ29sbGVjdGlvbiBzZXJ2aWNlcywgCiAgICBBY3Rpb248SUh0dHBDbGllbnRCdWlsZGVyPj8gYnVpbGRlciA9IGRlZmF1bHQsIAogICAgUmVmaXRTZXR0aW5ncz8gc2V0dGluZ3MgPSBkZWZhdWx0KQp7CiAgICB2YXIgY2xpZW50QnVpbGRlcklTd2FnZ2VyUGV0c3RvcmUgPSBzZXJ2aWNlcwogICAgICAgIC5BZGRSZWZpdENsaWVudDxJU3dhZ2dlclBldHN0b3JlPihzZXR0aW5ncykKICAgICAgICAuQ29uZmlndXJlSHR0cENsaWVudChjID0+IGMuQmFzZUFkZHJlc3MgPSBuZXcgVXJpKCJodHRwczovL3BldHN0b3JlMy5zd2FnZ2VyLmlvL2FwaS92MyIpKQogICAgICAgIC5BZGRIdHRwTWVzc2FnZUhhbmRsZXI8VGVsZW1ldHJ5RGVsZWdhdGluZ0hhbmRsZXI+KCk7CgogICAgY2xpZW50QnVpbGRlcklTd2FnZ2VyUGV0c3RvcmUKICAgICAgICAuQWRkUG9saWN5SGFuZGxlcigKICAgICAgICAgICAgSHR0cFBvbGljeUV4dGVuc2lvbnMKICAgICAgICAgICAgICAgIC5IYW5kbGVUcmFuc2llbnRIdHRwRXJyb3IoKQogICAgICAgICAgICAgICAgLldhaXRBbmRSZXRyeUFzeW5jKAogICAgICAgICAgICAgICAgICAgIEJhY2tvZmYuRGVjb3JyZWxhdGVkSml0dGVyQmFja29mZlYyKAogICAgICAgICAgICAgICAgICAgICAgICBUaW1lU3Bhbi5Gcm9tU2Vjb25kcygwLjUpLAogICAgICAgICAgICAgICAgICAgICAgICAzKSkpOwoKICAgIGJ1aWxkZXI/Lkludm9rZShjbGllbnRCdWlsZGVySVN3YWdnZXJQZXRzdG9yZSk7CgogICAgcmV0dXJuIHNlcnZpY2VzOwp9CmBgYAoKVGhpcyBjb21lcyBpbiBoYW5keSBlc3BlY2lhbGx5IHdoZW4gZ2VuZXJhdGluZyBtdWx0aXBsZSBpbnRlcmZhY2VzLCBieSB0YWcgb3IgZW5kcG9pbnQuIEZvciBleGFtcGxlLCB0aGUgZm9sbG93aW5nIGAucmVmaXR0ZXJgIHNldHRpbmdzIGZpbGUKCmBgYGpzb24KewogICJvcGVuQXBpUGF0aCI6ICIuLi9PcGVuQVBJL3YzLjAvcGV0c3RvcmUuanNvbiIsCiAgIm5hbWVzcGFjZSI6ICJQZXRzdG9yZSIsCiAgIm11bHRpcGxlSW50ZXJmYWNlcyI6ICJCeVRhZyIsCiAgImRlcGVuZGVuY3lJbmplY3Rpb25TZXR0aW5ncyI6IHsKICAgICJiYXNlVXJsIjogImh0dHBzOi8vcGV0c3RvcmUzLnN3YWdnZXIuaW8vYXBpL3YzIiwKICAgICJodHRwTWVzc2FnZUhhbmRsZXJzIjogWyAiVGVsZW1ldHJ5RGVsZWdhdGluZ0hhbmRsZXIiIF0sCiAgICAidHJhbnNpZW50RXJyb3JIYW5kbGVyIjogIlBvbGx5IiwKICAgICJtYXhSZXRyeUNvdW50IjogMywKICAgICJmaXJzdEJhY2tvZmZSZXRyeUluU2Vjb25kcyI6IDAuNQogIH0KfQpgYGAKCldpbGwgZ2VuZXJhdGUgYSBzaW5nbGUgYENvbmZpZ3VyZVJlZml0Q2xpZW50cygpYCBleHRlbnNpb24gbWV0aG9kcyB0aGF0IG1heSBjb250YWluIGRlcGVuZGVuY3kgaW5qZWN0aW9uIGNvbmZpZ3VyYXRpb24gY29kZSBmb3IgbXVsdGlwbGUgaW50ZXJmYWNlcyBsaWtlIHRoaXMKCmBgYGNzaGFycApwdWJsaWMgc3RhdGljIElTZXJ2aWNlQ29sbGVjdGlvbiBDb25maWd1cmVSZWZpdENsaWVudHMoCiAgICB0aGlzIElTZXJ2aWNlQ29sbGVjdGlvbiBzZXJ2aWNlcywgCiAgICBBY3Rpb248SUh0dHBDbGllbnRCdWlsZGVyPj8gYnVpbGRlciA9IGRlZmF1bHQsIAogICAgUmVmaXRTZXR0aW5ncz8gc2V0dGluZ3MgPSBkZWZhdWx0KQp7CiAgICB2YXIgY2xpZW50QnVpbGRlcklQZXRBcGkgPSBzZXJ2aWNlcwogICAgICAgIC5BZGRSZWZpdENsaWVudDxJUGV0QXBpPihzZXR0aW5ncykKICAgICAgICAuQ29uZmlndXJlSHR0cENsaWVudChjID0+IGMuQmFzZUFkZHJlc3MgPSBuZXcgVXJpKCJodHRwczovL3BldHN0b3JlMy5zd2FnZ2VyLmlvL2FwaS92MyIpKQogICAgICAgIC5BZGRIdHRwTWVzc2FnZUhhbmRsZXI8VGVsZW1ldHJ5RGVsZWdhdGluZ0hhbmRsZXI+KCk7CgogICAgY2xpZW50QnVpbGRlcklQZXRBcGkKICAgICAgICAuQWRkUG9saWN5SGFuZGxlcigKICAgICAgICAgICAgSHR0cFBvbGljeUV4dGVuc2lvbnMKICAgICAgICAgICAgICAgIC5IYW5kbGVUcmFuc2llbnRIdHRwRXJyb3IoKQogICAgICAgICAgICAgICAgLldhaXRBbmRSZXRyeUFzeW5jKAogICAgICAgICAgICAgICAgICAgIEJhY2tvZmYuRGVjb3JyZWxhdGVkSml0dGVyQmFja29mZlYyKAogICAgICAgICAgICAgICAgICAgICAgICBUaW1lU3Bhbi5Gcm9tU2Vjb25kcygwLjUpLAogICAgICAgICAgICAgICAgICAgICAgICAzKSkpOwoKICAgIGJ1aWxkZXI/Lkludm9rZShjbGllbnRCdWlsZGVySVBldEFwaSk7CgogICAgdmFyIGNsaWVudEJ1aWxkZXJJU3RvcmVBcGkgPSBzZXJ2aWNlcwogICAgICAgIC5BZGRSZWZpdENsaWVudDxJU3RvcmVBcGk+KHNldHRpbmdzKQogICAgICAgIC5Db25maWd1cmVIdHRwQ2xpZW50KGMgPT4gYy5CYXNlQWRkcmVzcyA9IG5ldyBVcmkoImh0dHBzOi8vcGV0c3RvcmUzLnN3YWdnZXIuaW8vYXBpL3YzIikpCiAgICAgICAgLkFkZEh0dHBNZXNzYWdlSGFuZGxlcjxUZWxlbWV0cnlEZWxlZ2F0aW5nSGFuZGxlcj4oKTsKCiAgICBjbGllbnRCdWlsZGVySVN0b3JlQXBpCiAgICAgICAgLkFkZFBvbGljeUhhbmRsZXIoCiAgICAgICAgICAgIEh0dHBQb2xpY3lFeHRlbnNpb25zCiAgICAgICAgICAgICAgICAuSGFuZGxlVHJhbnNpZW50SHR0cEVycm9yKCkKICAgICAgICAgICAgICAgIC5XYWl0QW5kUmV0cnlBc3luYygKICAgICAgICAgICAgICAgICAgICBCYWNrb2ZmLkRlY29ycmVsYXRlZEppdHRlckJhY2tvZmZWMigKICAgICAgICAgICAgICAgICAgICAgICAgVGltZVNwYW4uRnJvbVNlY29uZHMoMC41KSwKICAgICAgICAgICAgICAgICAgICAgICAgMykpKTsKCiAgICBidWlsZGVyPy5JbnZva2UoY2xpZW50QnVpbGRlcklTdG9yZUFwaSk7CgogICAgdmFyIGNsaWVudEJ1aWxkZXJJVXNlckFwaSA9IHNlcnZpY2VzCiAgICAgICAgLkFkZFJlZml0Q2xpZW50PElVc2VyQXBpPihzZXR0aW5ncykKICAgICAgICAuQ29uZmlndXJlSHR0cENsaWVudChjID0+IGMuQmFzZUFkZHJlc3MgPSBuZXcgVXJpKCJodHRwczovL3BldHN0b3JlMy5zd2FnZ2VyLmlvL2FwaS92MyIpKQogICAgICAgIC5BZGRIdHRwTWVzc2FnZUhhbmRsZXI8VGVsZW1ldHJ5RGVsZWdhdGluZ0hhbmRsZXI+KCk7CgogICAgY2xpZW50QnVpbGRlcklVc2VyQXBpCiAgICAgICAgLkFkZFBvbGljeUhhbmRsZXIoCiAgICAgICAgICAgIEh0dHBQb2xpY3lFeHRlbnNpb25zCiAgICAgICAgICAgICAgICAuSGFuZGxlVHJhbnNpZW50SHR0cEVycm9yKCkKICAgICAgICAgICAgICAgIC5XYWl0QW5kUmV0cnlBc3luYygKICAgICAgICAgICAgICAgICAgICBCYWNrb2ZmLkRlY29ycmVsYXRlZEppdHRlckJhY2tvZmZWMigKICAgICAgICAgICAgICAgICAgICAgICAgVGltZVNwYW4uRnJvbVNlY29uZHMoMC41KSwKICAgICAgICAgICAgICAgICAgICAgICAgMykpKTsKCiAgICBidWlsZGVyPy5JbnZva2UoY2xpZW50QnVpbGRlcklVc2VyQXBpKTsKCiAgICByZXR1cm4gc2VydmljZXM7Cn0KYGBgCgpQZXJzb25hbGx5LCB0aGV5IEkgdXNlIFJlZml0dGVyIGlzIHRvIGdlbmVyYXRlIGFuIGludGVyZmFjZSBwZXIgZW5kcG9pbnQsIHNvIHdoZW4gZ2VuZXJhdGluZyBjb2RlIGZvciBhIGxhcmdlIGFuZCBjb21wbGV4IEFQSSwgSSBtaWdodCBoYXZlIHNldmVyYWwgaW50ZXJmYWNlcy4KCiMjIFN5c3RlbSByZXF1aXJlbWVudHMKLk5FVCA4LjAKCiMjIENvbnRyaWJ1dG9ycwoKPCEtLSBBTEwtQ09OVFJJQlVUT1JTLUxJU1Q6U1RBUlQgLSBEbyBub3QgcmVtb3ZlIG9yIG1vZGlmeSB0aGlzIHNlY3Rpb24gLS0+CjwhLS0gcHJldHRpZXItaWdub3JlLXN0YXJ0IC0tPgo8IS0tIG1hcmtkb3dubGludC1kaXNhYmxlIC0tPgo8dGFibGU+CiAgPHRib2R5PgogICAgPHRyPgogICAgICA8dGQgYWxpZ249ImNlbnRlciIgdmFsaWduPSJ0b3AiIHdpZHRoPSIxNC4yOCUiPjxhIGhyZWY9Imh0dHBzOi8vZ2l0aHViLmNvbS9uZW9HZW5ldmEiPjxpbWcgc3JjPSJodHRwczovL2F2YXRhcnMuZ2l0aHVidXNlcmNvbnRlbnQuY29tL3UvODA0NzI0P3Y9ND9zPTEwMCIgd2lkdGg9IjEwMHB4OyIgYWx0PSJQaGlsaXAgQ294Ii8+PGJyIC8+PHN1Yj48Yj5QaGlsaXAgQ294PC9iPjwvc3ViPjwvYT48YnIgLz48YSBocmVmPSJodHRwczovL2dpdGh1Yi5jb20vY2hyaXN0aWFuaGVsbGUvcmVmaXR0ZXIvY29tbWl0cz9hdXRob3I9bmVvR2VuZXZhIiB0aXRsZT0iQ29kZSI+8J+SuzwvYT48L3RkPgogICAgICA8dGQgYWxpZ249ImNlbnRlciIgdmFsaWduPSJ0b3AiIHdpZHRoPSIxNC4yOCUiPjxhIGhyZWY9Imh0dHBzOi8vY2FtLm1hY2Zhci5sYW5kLyI+PGltZyBzcmM9Imh0dHBzOi8vYXZhdGFycy5naXRodWJ1c2VyY29udGVudC5jb20vdS8xMjk4ODQ3P3Y9ND9zPTEwMCIgd2lkdGg9IjEwMHB4OyIgYWx0PSJDYW1lcm9uIE1hY0ZhcmxhbmQiLz48YnIgLz48c3ViPjxiPkNhbWVyb24gTWFjRmFybGFuZDwvYj48L3N1Yj48L2E+PGJyIC8+PGEgaHJlZj0iaHR0cHM6Ly9naXRodWIuY29tL2NocmlzdGlhbmhlbGxlL3JlZml0dGVyL2NvbW1pdHM/YXV0aG9yPWRpc3RhbnRjYW0iIHRpdGxlPSJDb2RlIj7wn5K7PC9hPjwvdGQ+CiAgICAgIDx0ZCBhbGlnbj0iY2VudGVyIiB2YWxpZ249InRvcCIgd2lkdGg9IjE0LjI4JSI+PGEgaHJlZj0iaHR0cDovL2tnYW1lLnR3Ij48aW1nIHNyYz0iaHR0cHM6Ly9hdmF0YXJzLmdpdGh1YnVzZXJjb250ZW50LmNvbS91LzM2NDY1MzI/dj00P3M9MTAwIiB3aWR0aD0iMTAwcHg7IiBhbHQ9ImtnYW1lIi8+PGJyIC8+PHN1Yj48Yj5rZ2FtZTwvYj48L3N1Yj48L2E+PGJyIC8+PGEgaHJlZj0iaHR0cHM6Ly9naXRodWIuY29tL2NocmlzdGlhbmhlbGxlL3JlZml0dGVyL2NvbW1pdHM/YXV0aG9yPWtnYW1lY2FydGVyIiB0aXRsZT0iQ29kZSI+8J+SuzwvYT48L3RkPgogICAgICA8dGQgYWxpZ249ImNlbnRlciIgdmFsaWduPSJ0b3AiIHdpZHRoPSIxNC4yOCUiPjxhIGhyZWY9Imh0dHA6Ly95cmtpLm5vIj48aW1nIHNyYz0iaHR0cHM6Ly9hdmF0YXJzLmdpdGh1YnVzZXJjb250ZW50LmNvbS91LzExNTczNjAxP3Y9ND9zPTEwMCIgd2lkdGg9IjEwMHB4OyIgYWx0PSJUaG9tYXMgUGV0dGVyc2VuIC8gWXJraSIvPjxiciAvPjxzdWI+PGI+VGhvbWFzIFBldHRlcnNlbiAvIFlya2k8L2I+PC9zdWI+PC9hPjxiciAvPjxhIGhyZWY9Imh0dHBzOi8vZ2l0aHViLmNvbS9jaHJpc3RpYW5oZWxsZS9yZWZpdHRlci9jb21taXRzP2F1dGhvcj0iIHRpdGxlPSJDb2RlIj7wn5K7PC9hPjwvdGQ+CiAgICAgIDx0ZCBhbGlnbj0iY2VudGVyIiB2YWxpZ249InRvcCIgd2lkdGg9IjE0LjI4JSI+PGEgaHJlZj0iaHR0cHM6Ly9naXRodWIuY29tLzFrdmluIj48aW1nIHNyYz0iaHR0cHM6Ly9hdmF0YXJzLmdpdGh1YnVzZXJjb250ZW50LmNvbS91LzQ2NDI1OTgwP3Y9ND9zPTEwMCIgd2lkdGg9IjEwMHB4OyIgYWx0PSJBcnRlbSIvPjxiciAvPjxzdWI+PGI+QXJ0ZW08L2I+PC9zdWI+PC9hPjxiciAvPjxhIGhyZWY9Imh0dHBzOi8vZ2l0aHViLmNvbS9jaHJpc3RpYW5oZWxsZS9yZWZpdHRlci9pc3N1ZXM/cT1hdXRob3IlM0Exa3ZpbiIgdGl0bGU9IkJ1ZyByZXBvcnRzIj7wn5CbPC9hPjwvdGQ+CiAgICAgIDx0ZCBhbGlnbj0iY2VudGVyIiB2YWxpZ249InRvcCIgd2lkdGg9IjE0LjI4JSI+PGEgaHJlZj0iaHR0cHM6Ly9naXRodWIuY29tL203Y2xhcmtlIj48aW1nIHNyYz0iaHR0cHM6Ly9hdmF0YXJzLmdpdGh1YnVzZXJjb250ZW50LmNvbS91LzQ3NDM5MTQ0P3Y9ND9zPTEwMCIgd2lkdGg9IjEwMHB4OyIgYWx0PSJtN2NsYXJrZSIvPjxiciAvPjxzdWI+PGI+bTdjbGFya2U8L2I+PC9zdWI+PC9hPjxiciAvPjxhIGhyZWY9Imh0dHBzOi8vZ2l0aHViLmNvbS9jaHJpc3RpYW5oZWxsZS9yZWZpdHRlci9pc3N1ZXM/cT1hdXRob3IlM0FtN2NsYXJrZSIgdGl0bGU9IkJ1ZyByZXBvcnRzIj7wn5CbPC9hPjwvdGQ+CiAgICAgIDx0ZCBhbGlnbj0iY2VudGVyIiB2YWxpZ249InRvcCIgd2lkdGg9IjE0LjI4JSI+PGEgaHJlZj0iaHR0cHM6Ly9naXRodWIuY29tL2tpcmlkZXMiPjxpbWcgc3JjPSJodHRwczovL2F2YXRhcnMuZ2l0aHVidXNlcmNvbnRlbnQuY29tL3UvMTM2MDIxNDM/dj00P3M9MTAwIiB3aWR0aD0iMTAwcHg7IiBhbHQ9ImtpcmlkZXMiLz48YnIgLz48c3ViPjxiPmtpcmlkZXM8L2I+PC9zdWI+PC9hPjxiciAvPjxhIGhyZWY9Imh0dHBzOi8vZ2l0aHViLmNvbS9jaHJpc3RpYW5oZWxsZS9yZWZpdHRlci9pc3N1ZXM/cT1hdXRob3IlM0FraXJpZGVzIiB0aXRsZT0iQnVnIHJlcG9ydHMiPvCfkJs8L2E+IDxhIGhyZWY9Imh0dHBzOi8vZ2l0aHViLmNvbS9jaHJpc3RpYW5oZWxsZS9yZWZpdHRlci9jb21taXRzP2F1dGhvcj1raXJpZGVzIiB0aXRsZT0iQ29kZSI+8J+SuzwvYT48L3RkPgogICAgPC90cj4KICAgIDx0cj4KICAgICAgPHRkIGFsaWduPSJjZW50ZXIiIHZhbGlnbj0idG9wIiB3aWR0aD0iMTQuMjglIj48YSBocmVmPSJodHRwczovL2dpdGh1Yi5jb20vZ3VpbGxhdW1lc2VyYWxlIj48aW1nIHNyYz0iaHR0cHM6Ly9hdmF0YXJzLmdpdGh1YnVzZXJjb250ZW50LmNvbS91LzY2NzI0MDY/dj00P3M9MTAwIiB3aWR0aD0iMTAwcHg7IiBhbHQ9Imd1aWxsYXVtZXNlcmFsZSIvPjxiciAvPjxzdWI+PGI+Z3VpbGxhdW1lc2VyYWxlPC9iPjwvc3ViPjwvYT48YnIgLz48YSBocmVmPSJodHRwczovL2dpdGh1Yi5jb20vY2hyaXN0aWFuaGVsbGUvcmVmaXR0ZXIvY29tbWl0cz9hdXRob3I9Z3VpbGxhdW1lc2VyYWxlIiB0aXRsZT0iQ29kZSI+8J+SuzwvYT4gPGEgaHJlZj0iaHR0cHM6Ly9naXRodWIuY29tL2NocmlzdGlhbmhlbGxlL3JlZml0dGVyL2lzc3Vlcz9xPWF1dGhvciUzQWd1aWxsYXVtZXNlcmFsZSIgdGl0bGU9IkJ1ZyByZXBvcnRzIj7wn5CbPC9hPjwvdGQ+CiAgICAgIDx0ZCBhbGlnbj0iY2VudGVyIiB2YWxpZ249InRvcCIgd2lkdGg9IjE0LjI4JSI+PGEgaHJlZj0iaHR0cHM6Ly9naXRodWIuY29tL1JvZmxpbmNvcHRlciI+PGltZyBzcmM9Imh0dHBzOi8vYXZhdGFycy5naXRodWJ1c2VyY29udGVudC5jb20vdS8xNjkwMjQzP3Y9ND9zPTEwMCIgd2lkdGg9IjEwMHB4OyIgYWx0PSJEZW5uaXMgQnJlbnRqZXMiLz48YnIgLz48c3ViPjxiPkRlbm5pcyBCcmVudGplczwvYj48L3N1Yj48L2E+PGJyIC8+PGEgaHJlZj0iaHR0cHM6Ly9naXRodWIuY29tL2NocmlzdGlhbmhlbGxlL3JlZml0dGVyL2NvbW1pdHM/YXV0aG9yPVJvZmxpbmNvcHRlciIgdGl0bGU9IkNvZGUiPvCfkrs8L2E+IDxhIGhyZWY9IiNpZGVhcy1Sb2ZsaW5jb3B0ZXIiIHRpdGxlPSJJZGVhcywgUGxhbm5pbmcsICYgRmVlZGJhY2siPvCfpJQ8L2E+PC90ZD4KICAgICAgPHRkIGFsaWduPSJjZW50ZXIiIHZhbGlnbj0idG9wIiB3aWR0aD0iMTQuMjglIj48YSBocmVmPSJodHRwczovL3d3dy5saW5rZWRpbi5jb20vaW4vaGlja2V5ZGFtaWFuLyI+PGltZyBzcmM9Imh0dHBzOi8vYXZhdGFycy5naXRodWJ1c2VyY29udGVudC5jb20vdS81NzQzNj92PTQ/cz0xMDAiIHdpZHRoPSIxMDBweDsiIGFsdD0iRGFtaWFuIEhpY2tleSIvPjxiciAvPjxzdWI+PGI+RGFtaWFuIEhpY2tleTwvYj48L3N1Yj48L2E+PGJyIC8+PGEgaHJlZj0iaHR0cHM6Ly9naXRodWIuY29tL2NocmlzdGlhbmhlbGxlL3JlZml0dGVyL2lzc3Vlcz9xPWF1dGhvciUzQWRhbWlhbmgiIHRpdGxlPSJCdWcgcmVwb3J0cyI+8J+QmzwvYT48L3RkPgogICAgICA8dGQgYWxpZ249ImNlbnRlciIgdmFsaWduPSJ0b3AiIHdpZHRoPSIxNC4yOCUiPjxhIGhyZWY9Imh0dHBzOi8vZ2l0aHViLmNvbS9yaWNoYXJkaHUtbG1nIj48aW1nIHNyYz0iaHR0cHM6Ly9hdmF0YXJzLmdpdGh1YnVzZXJjb250ZW50LmNvbS91LzEyNjQzMDc4Nz92PTQ/cz0xMDAiIHdpZHRoPSIxMDBweDsiIGFsdD0icmljaGFyZGh1LWxtZyIvPjxiciAvPjxzdWI+PGI+cmljaGFyZGh1LWxtZzwvYj48L3N1Yj48L2E+PGJyIC8+PGEgaHJlZj0iaHR0cHM6Ly9naXRodWIuY29tL2NocmlzdGlhbmhlbGxlL3JlZml0dGVyL2lzc3Vlcz9xPWF1dGhvciUzQXJpY2hhcmRodS1sbWciIHRpdGxlPSJCdWcgcmVwb3J0cyI+8J+QmzwvYT48L3RkPgogICAgICA8dGQgYWxpZ249ImNlbnRlciIgdmFsaWduPSJ0b3AiIHdpZHRoPSIxNC4yOCUiPjxhIGhyZWY9Imh0dHBzOi8vZ2l0aHViLmNvbS9icmVhc2UtY29saW4iPjxpbWcgc3JjPSJodHRwczovL2F2YXRhcnMuZ2l0aHVidXNlcmNvbnRlbnQuY29tL3UvNDczNTg5MzU/dj00P3M9MTAwIiB3aWR0aD0iMTAwcHg7IiBhbHQ9ImJyZWFzZS1jb2xpbiIvPjxiciAvPjxzdWI+PGI+YnJlYXNlLWNvbGluPC9iPjwvc3ViPjwvYT48YnIgLz48YSBocmVmPSJodHRwczovL2dpdGh1Yi5jb20vY2hyaXN0aWFuaGVsbGUvcmVmaXR0ZXIvaXNzdWVzP3E9YXV0aG9yJTNBYnJlYXNlLWNvbGluIiB0aXRsZT0iQnVnIHJlcG9ydHMiPvCfkJs8L2E+PC90ZD4KICAgICAgPHRkIGFsaWduPSJjZW50ZXIiIHZhbGlnbj0idG9wIiB3aWR0aD0iMTQuMjglIj48YSBocmVmPSJodHRwczovL2dpdGh1Yi5jb20vYW5nZWxvZmIiPjxpbWcgc3JjPSJodHRwczovL2F2YXRhcnMuZ2l0aHVidXNlcmNvbnRlbnQuY29tL3UvMjAzMjI1Nz92PTQ/cz0xMDAiIHdpZHRoPSIxMDBweDsiIGFsdD0iYW5nZWxvZmIiLz48YnIgLz48c3ViPjxiPmFuZ2Vsb2ZiPC9iPjwvc3ViPjwvYT48YnIgLz48YSBocmVmPSJodHRwczovL2dpdGh1Yi5jb20vY2hyaXN0aWFuaGVsbGUvcmVmaXR0ZXIvY29tbWl0cz9hdXRob3I9YW5nZWxvZmIiIHRpdGxlPSJDb2RlIj7wn5K7PC9hPjwvdGQ+CiAgICAgIDx0ZCBhbGlnbj0iY2VudGVyIiB2YWxpZ249InRvcCIgd2lkdGg9IjE0LjI4JSI+PGEgaHJlZj0iaHR0cHM6Ly9naXRodWIuY29tL05vR1JvIj48aW1nIHNyYz0iaHR0cHM6Ly9hdmF0YXJzLmdpdGh1YnVzZXJjb250ZW50LmNvbS91LzU2NjUyNzM/dj00P3M9MTAwIiB3aWR0aD0iMTAwcHg7IiBhbHQ9IkRpbSBOb2dybyIvPjxiciAvPjxzdWI+PGI+RGltIE5vZ3JvPC9iPjwvc3ViPjwvYT48YnIgLz48YSBocmVmPSJodHRwczovL2dpdGh1Yi5jb20vY2hyaXN0aWFuaGVsbGUvcmVmaXR0ZXIvY29tbWl0cz9hdXRob3I9Tm9HUm8iIHRpdGxlPSJDb2RlIj7wn5K7PC9hPjwvdGQ+CiAgICA8L3RyPgogICAgPHRyPgogICAgICA8dGQgYWxpZ249ImNlbnRlciIgdmFsaWduPSJ0b3AiIHdpZHRoPSIxNC4yOCUiPjxhIGhyZWY9Imh0dHBzOi8vZ2l0aHViLmNvbS95YWRhbmlsb3YxOSI+PGltZyBzcmM9Imh0dHBzOi8vYXZhdGFycy5naXRodWJ1c2VyY29udGVudC5jb20vdS8xNzE2MTA2NT92PTQ/cz0xMDAiIHdpZHRoPSIxMDBweDsiIGFsdD0ieWFkYW5pbG92MTkiLz48YnIgLz48c3ViPjxiPnlhZGFuaWxvdjE5PC9iPjwvc3ViPjwvYT48YnIgLz48YSBocmVmPSIjaWRlYXMteWFkYW5pbG92MTkiIHRpdGxlPSJJZGVhcywgUGxhbm5pbmcsICYgRmVlZGJhY2siPvCfpJQ8L2E+IDxhIGhyZWY9Imh0dHBzOi8vZ2l0aHViLmNvbS9jaHJpc3RpYW5oZWxsZS9yZWZpdHRlci9jb21taXRzP2F1dGhvcj15YWRhbmlsb3YxOSIgdGl0bGU9IkNvZGUiPvCfkrs8L2E+PC90ZD4KICAgICAgPHRkIGFsaWduPSJjZW50ZXIiIHZhbGlnbj0idG9wIiB3aWR0aD0iMTQuMjglIj48YSBocmVmPSJodHRwczovL2dpdGh1Yi5jb20vZGFucG93ZWxsODgiPjxpbWcgc3JjPSJodHRwczovL2F2YXRhcnMuZ2l0aHVidXNlcmNvbnRlbnQuY29tL3UvMTEwMDM5Nz92PTQ/cz0xMDAiIHdpZHRoPSIxMDBweDsiIGFsdD0iRGFuaWVsIFBvd2VsbCIvPjxiciAvPjxzdWI+PGI+RGFuaWVsIFBvd2VsbDwvYj48L3N1Yj48L2E+PGJyIC8+PGEgaHJlZj0iaHR0cHM6Ly9naXRodWIuY29tL2NocmlzdGlhbmhlbGxlL3JlZml0dGVyL2lzc3Vlcz9xPWF1dGhvciUzQWRhbnBvd2VsbDg4IiB0aXRsZT0iQnVnIHJlcG9ydHMiPvCfkJs8L2E+PC90ZD4KICAgICAgPHRkIGFsaWduPSJjZW50ZXIiIHZhbGlnbj0idG9wIiB3aWR0aD0iMTQuMjglIj48YSBocmVmPSJodHRwczovL2dpdGh1Yi5jb20vRWtrZWlyIj48aW1nIHNyYz0iaHR0cHM6Ly9hdmF0YXJzLmdpdGh1YnVzZXJjb250ZW50LmNvbS91LzM2MTk0Njg1P3Y9ND9zPTEwMCIgd2lkdGg9IjEwMHB4OyIgYWx0PSJFa2tlaXIiLz48YnIgLz48c3ViPjxiPkVra2VpcjwvYj48L3N1Yj48L2E+PGJyIC8+PGEgaHJlZj0iaHR0cHM6Ly9naXRodWIuY29tL2NocmlzdGlhbmhlbGxlL3JlZml0dGVyL2NvbW1pdHM/YXV0aG9yPUVra2VpciIgdGl0bGU9IkRvY3VtZW50YXRpb24iPvCfk5Y8L2E+IDxhIGhyZWY9Imh0dHBzOi8vZ2l0aHViLmNvbS9jaHJpc3RpYW5oZWxsZS9yZWZpdHRlci9pc3N1ZXM/cT1hdXRob3IlM0FFa2tlaXIiIHRpdGxlPSJCdWcgcmVwb3J0cyI+8J+QmzwvYT48L3RkPgogICAgICA8dGQgYWxpZ249ImNlbnRlciIgdmFsaWduPSJ0b3AiIHdpZHRoPSIxNC4yOCUiPjxhIGhyZWY9Imh0dHBzOi8vZ2l0aHViLmNvbS93YXlsb25tdHoiPjxpbWcgc3JjPSJodHRwczovL2F2YXRhcnMuZ2l0aHVidXNlcmNvbnRlbnQuY29tL3UvNDYwNDU3OT92PTQ/cz0xMDAiIHdpZHRoPSIxMDBweDsiIGFsdD0iV2F5bG9uIE1hcnRpbmV6Ii8+PGJyIC8+PHN1Yj48Yj5XYXlsb24gTWFydGluZXo8L2I+PC9zdWI+PC9hPjxiciAvPjxhIGhyZWY9Imh0dHBzOi8vZ2l0aHViLmNvbS9jaHJpc3RpYW5oZWxsZS9yZWZpdHRlci9pc3N1ZXM/cT1hdXRob3IlM0F3YXlsb25tdHoiIHRpdGxlPSJCdWcgcmVwb3J0cyI+8J+QmzwvYT48L3RkPgogICAgICA8dGQgYWxpZ249ImNlbnRlciIgdmFsaWduPSJ0b3AiIHdpZHRoPSIxNC4yOCUiPjxhIGhyZWY9Imh0dHBzOi8vZ2l0aHViLmNvbS92aW5heW1hZHVwYXRoaSI+PGltZyBzcmM9Imh0dHBzOi8vYXZhdGFycy5naXRodWJ1c2VyY29udGVudC5jb20vdS8zODEwMjkwMD92PTQ/cz0xMDAiIHdpZHRoPSIxMDBweDsiIGFsdD0idmttYWR1cGEiLz48YnIgLz48c3ViPjxiPnZrbWFkdXBhPC9iPjwvc3ViPjwvYT48YnIgLz48YSBocmVmPSJodHRwczovL2dpdGh1Yi5jb20vY2hyaXN0aWFuaGVsbGUvcmVmaXR0ZXIvaXNzdWVzP3E9YXV0aG9yJTNBdmluYXltYWR1cGF0aGkiIHRpdGxlPSJCdWcgcmVwb3J0cyI+8J+QmzwvYT48L3RkPgogICAgICA8dGQgYWxpZ249ImNlbnRlciIgdmFsaWduPSJ0b3AiIHdpZHRoPSIxNC4yOCUiPjxhIGhyZWY9Imh0dHBzOi8vZ2l0aHViLmNvbS9Ob2JsaXgiPjxpbWcgc3JjPSJodHRwczovL2F2YXRhcnMuZ2l0aHVidXNlcmNvbnRlbnQuY29tL3UvMjIwNzY4ODM/dj00P3M9MTAwIiB3aWR0aD0iMTAwcHg7IiBhbHQ9Ik5vYmxpeCIvPjxiciAvPjxzdWI+PGI+Tm9ibGl4PC9iPjwvc3ViPjwvYT48YnIgLz48YSBocmVmPSJodHRwczovL2dpdGh1Yi5jb20vY2hyaXN0aWFuaGVsbGUvcmVmaXR0ZXIvY29tbWl0cz9hdXRob3I9Tm9ibGl4IiB0aXRsZT0iQ29kZSI+8J+SuzwvYT4gPGEgaHJlZj0iI2lkZWFzLU5vYmxpeCIgdGl0bGU9IklkZWFzLCBQbGFubmluZywgJiBGZWVkYmFjayI+8J+klDwvYT48L3RkPgogICAgICA8dGQgYWxpZ249ImNlbnRlciIgdmFsaWduPSJ0b3AiIHdpZHRoPSIxNC4yOCUiPjxhIGhyZWY9Imh0dHBzOi8vd3d3LnZlZXpsYS5pbyI+PGltZyBzcmM9Imh0dHBzOi8vYXZhdGFycy5naXRodWJ1c2VyY29udGVudC5jb20vdS8yMzA0MzI/dj00P3M9MTAwIiB3aWR0aD0iMTAwcHg7IiBhbHQ9IkF0dGlsYSBIYWpkcmlrIi8+PGJyIC8+PHN1Yj48Yj5BdHRpbGEgSGFqZHJpazwvYj48L3N1Yj48L2E+PGJyIC8+PGEgaHJlZj0iI2lkZWFzLWF0dGlsYWgiIHRpdGxlPSJJZGVhcywgUGxhbm5pbmcsICYgRmVlZGJhY2siPvCfpJQ8L2E+PC90ZD4KICAgIDwvdHI+CiAgICA8dHI+CiAgICAgIDx0ZCBhbGlnbj0iY2VudGVyIiB2YWxpZ249InRvcCIgd2lkdGg9IjE0LjI4JSI+PGEgaHJlZj0iaHR0cHM6Ly9naXRodWIuY29tL2JpZWxpazAxIj48aW1nIHNyYz0iaHR0cHM6Ly9hdmF0YXJzLmdpdGh1YnVzZXJjb250ZW50LmNvbS91LzkyMDk1MD92PTQ/cz0xMDAiIHdpZHRoPSIxMDBweDsiIGFsdD0iYmllbGlrMDEiLz48YnIgLz48c3ViPjxiPmJpZWxpazAxPC9iPjwvc3ViPjwvYT48YnIgLz48YSBocmVmPSJodHRwczovL2dpdGh1Yi5jb20vY2hyaXN0aWFuaGVsbGUvcmVmaXR0ZXIvaXNzdWVzP3E9YXV0aG9yJTNBYmllbGlrMDEiIHRpdGxlPSJCdWcgcmVwb3J0cyI+8J+QmzwvYT4gPGEgaHJlZj0iI2lkZWFzLWJpZWxpazAxIiB0aXRsZT0iSWRlYXMsIFBsYW5uaW5nLCAmIEZlZWRiYWNrIj7wn6SUPC9hPjwvdGQ+CiAgICAgIDx0ZCBhbGlnbj0iY2VudGVyIiB2YWxpZ249InRvcCIgd2lkdGg9IjE0LjI4JSI+PGEgaHJlZj0iaHR0cHM6Ly9naXRodWIuY29tL25hYWVlZiI+PGltZyBzcmM9Imh0dHBzOi8vYXZhdGFycy5naXRodWJ1c2VyY29udGVudC5jb20vdS80MzMzOTA3MT92PTQ/cz0xMDAiIHdpZHRoPSIxMDBweDsiIGFsdD0ibmFhZWVmIi8+PGJyIC8+PHN1Yj48Yj5uYWFlZWY8L2I+PC9zdWI+PC9hPjxiciAvPjxhIGhyZWY9IiNpZGVhcy1uYWFlZWYiIHRpdGxlPSJJZGVhcywgUGxhbm5pbmcsICYgRmVlZGJhY2siPvCfpJQ8L2E+PC90ZD4KICAgICAgPHRkIGFsaWduPSJjZW50ZXIiIHZhbGlnbj0idG9wIiB3aWR0aD0iMTQuMjglIj48YSBocmVmPSJodHRwczovL2dpdGh1Yi5jb20vYWxyeiI+PGltZyBzcmM9Imh0dHBzOi8vYXZhdGFycy5naXRodWJ1c2VyY29udGVudC5jb20vdS8zMTA1OTc5P3Y9ND9zPTEwMCIgd2lkdGg9IjEwMHB4OyIgYWx0PSJBbGlyZXphIEhhYmliaSIvPjxiciAvPjxzdWI+PGI+QWxpcmV6YSBIYWJpYmk8L2I+PC9zdWI+PC9hPjxiciAvPjxhIGhyZWY9Imh0dHBzOi8vZ2l0aHViLmNvbS9jaHJpc3RpYW5oZWxsZS9yZWZpdHRlci9pc3N1ZXM/cT1hdXRob3IlM0FhbHJ6IiB0aXRsZT0iQnVnIHJlcG9ydHMiPvCfkJs8L2E+PC90ZD4KICAgICAgPHRkIGFsaWduPSJjZW50ZXIiIHZhbGlnbj0idG9wIiB3aWR0aD0iMTQuMjglIj48YSBocmVmPSJodHRwczovL2dpdGh1Yi5jb20vRUVQYXJrZXIiPjxpbWcgc3JjPSJodHRwczovL2F2YXRhcnMuZ2l0aHVidXNlcmNvbnRlbnQuY29tL3UvMTU4NzQwNzY/dj00P3M9MTAwIiB3aWR0aD0iMTAwcHg7IiBhbHQ9IkplZmYgUGFya2VyLCBQRSIvPjxiciAvPjxzdWI+PGI+SmVmZiBQYXJrZXIsIFBFPC9iPjwvc3ViPjwvYT48YnIgLz48YSBocmVmPSJodHRwczovL2dpdGh1Yi5jb20vY2hyaXN0aWFuaGVsbGUvcmVmaXR0ZXIvaXNzdWVzP3E9YXV0aG9yJTNBRUVQYXJrZXIiIHRpdGxlPSJCdWcgcmVwb3J0cyI+8J+QmzwvYT48L3RkPgogICAgICA8dGQgYWxpZ249ImNlbnRlciIgdmFsaWduPSJ0b3AiIHdpZHRoPSIxNC4yOCUiPjxhIGhyZWY9Imh0dHBzOi8vZ2l0aHViLmNvbS9qb2RzNCI+PGltZyBzcmM9Imh0dHBzOi8vYXZhdGFycy5naXRodWJ1c2VyY29udGVudC5jb20vdS8zODMyODIwP3Y9ND9zPTEwMCIgd2lkdGg9IjEwMHB4OyIgYWx0PSJqb2RzIi8+PGJyIC8+PHN1Yj48Yj5qb2RzPC9iPjwvc3ViPjwvYT48YnIgLz48YSBocmVmPSIjaWRlYXMtam9kczQiIHRpdGxlPSJJZGVhcywgUGxhbm5pbmcsICYgRmVlZGJhY2siPvCfpJQ8L2E+IDxhIGhyZWY9Imh0dHBzOi8vZ2l0aHViLmNvbS9jaHJpc3RpYW5oZWxsZS9yZWZpdHRlci9pc3N1ZXM/cT1hdXRob3IlM0Fqb2RzNCIgdGl0bGU9IkJ1ZyByZXBvcnRzIj7wn5CbPC9hPjwvdGQ+CiAgICAgIDx0ZCBhbGlnbj0iY2VudGVyIiB2YWxpZ249InRvcCIgd2lkdGg9IjE0LjI4JSI+PGEgaHJlZj0iaHR0cHM6Ly9naXRodWIuY29tL2VkaW1hcnF1ZXoiPjxpbWcgc3JjPSJodHRwczovL2F2YXRhcnMuZ2l0aHVidXNlcmNvbnRlbnQuY29tL3UvNDE3OTE3MTk/dj00P3M9MTAwIiB3aWR0aD0iMTAwcHg7IiBhbHQ9IkVkaW1hcnF1ZXogTWVkZWlyb3MiLz48YnIgLz48c3ViPjxiPkVkaW1hcnF1ZXogTWVkZWlyb3M8L2I+PC9zdWI+PC9hPjxiciAvPjxhIGhyZWY9Imh0dHBzOi8vZ2l0aHViLmNvbS9jaHJpc3RpYW5oZWxsZS9yZWZpdHRlci9jb21taXRzP2F1dGhvcj1lZGltYXJxdWV6IiB0aXRsZT0iQ29kZSI+8J+SuzwvYT48L3RkPgogICAgICA8dGQgYWxpZ249ImNlbnRlciIgdmFsaWduPSJ0b3AiIHdpZHRoPSIxNC4yOCUiPjxhIGhyZWY9Imh0dHBzOi8vZ2l0aHViLmNvbS9zYWZha2tlc2lrY2kiPjxpbWcgc3JjPSJodHRwczovL2F2YXRhcnMuZ2l0aHVidXNlcmNvbnRlbnQuY29tL3UvNzA2NzI1Mj92PTQ/cz0xMDAiIHdpZHRoPSIxMDBweDsiIGFsdD0ic2FmYWtrZXNpa2NpIi8+PGJyIC8+PHN1Yj48Yj5zYWZha2tlc2lrY2k8L2I+PC9zdWI+PC9hPjxiciAvPjxhIGhyZWY9Imh0dHBzOi8vZ2l0aHViLmNvbS9jaHJpc3RpYW5oZWxsZS9yZWZpdHRlci9pc3N1ZXM/cT1hdXRob3IlM0FzYWZha2tlc2lrY2kiIHRpdGxlPSJCdWcgcmVwb3J0cyI+8J+QmzwvYT48L3RkPgogICAgPC90cj4KICAgIDx0cj4KICAgICAgPHRkIGFsaWduPSJjZW50ZXIiIHZhbGlnbj0idG9wIiB3aWR0aD0iMTQuMjglIj48YSBocmVmPSJodHRwczovL2dpdGh1Yi5jb20vZm9sYnJlY2h0Ij48aW1nIHNyYz0iaHR0cHM6Ly9hdmF0YXJzLmdpdGh1YnVzZXJjb250ZW50LmNvbS91LzE0NTUzNzg0Nj92PTQ/cz0xMDAiIHdpZHRoPSIxMDBweDsiIGFsdD0iZm9sYnJlY2h0Ii8+PGJyIC8+PHN1Yj48Yj5mb2xicmVjaHQ8L2I+PC9zdWI+PC9hPjxiciAvPjxhIGhyZWY9Imh0dHBzOi8vZ2l0aHViLmNvbS9jaHJpc3RpYW5oZWxsZS9yZWZpdHRlci9pc3N1ZXM/cT1hdXRob3IlM0Fmb2xicmVjaHQiIHRpdGxlPSJCdWcgcmVwb3J0cyI+8J+QmzwvYT48L3RkPgogICAgICA8dGQgYWxpZ249ImNlbnRlciIgdmFsaWduPSJ0b3AiIHdpZHRoPSIxNC4yOCUiPjxhIGhyZWY9Imh0dHBzOi8vZ2l0aHViLmNvbS9tb3J0ZW5sYXVyc2VuIj48aW1nIHNyYz0iaHR0cHM6Ly9hdmF0YXJzLmdpdGh1YnVzZXJjb250ZW50LmNvbS91LzI4NzU5NzM3P3Y9ND9zPTEwMCIgd2lkdGg9IjEwMHB4OyIgYWx0PSJtb3J0ZW5sYXVyc2VuIi8+PGJyIC8+PHN1Yj48Yj5tb3J0ZW5sYXVyc2VuPC9iPjwvc3ViPjwvYT48YnIgLz48YSBocmVmPSJodHRwczovL2dpdGh1Yi5jb20vY2hyaXN0aWFuaGVsbGUvcmVmaXR0ZXIvY29tbWl0cz9hdXRob3I9bW9ydGVubGF1cnNlbiIgdGl0bGU9IkNvZGUiPvCfkrs8L2E+PC90ZD4KICAgICAgPHRkIGFsaWduPSJjZW50ZXIiIHZhbGlnbj0idG9wIiB3aWR0aD0iMTQuMjglIj48YSBocmVmPSJodHRwczovL2dpdGh1Yi5jb20vbWFudWVsLWZlcm5hbmRlei1yb2RyaWd1ZXoiPjxpbWcgc3JjPSJodHRwczovL2F2YXRhcnMuZ2l0aHVidXNlcmNvbnRlbnQuY29tL3UvNDg1MjAyMDU/dj00P3M9MTAwIiB3aWR0aD0iMTAwcHg7IiBhbHQ9Im1hbnVlbC1mZXJuYW5kZXotcm9kcmlndWV6Ii8+PGJyIC8+PHN1Yj48Yj5tYW51ZWwtZmVybmFuZGV6LXJvZHJpZ3VlejwvYj48L3N1Yj48L2E+PGJyIC8+PGEgaHJlZj0iaHR0cHM6Ly9naXRodWIuY29tL2NocmlzdGlhbmhlbGxlL3JlZml0dGVyL2lzc3Vlcz9xPWF1dGhvciUzQW1hbnVlbC1mZXJuYW5kZXotcm9kcmlndWV6IiB0aXRsZT0iQnVnIHJlcG9ydHMiPvCfkJs8L2E+PC90ZD4KICAgICAgPHRkIGFsaWduPSJjZW50ZXIiIHZhbGlnbj0idG9wIiB3aWR0aD0iMTQuMjglIj48YSBocmVmPSJodHRwczovL2dpdGh1Yi5jb20vZWxpeWFtbWluZSI+PGltZyBzcmM9Imh0dHBzOi8vYXZhdGFycy5naXRodWJ1c2VyY29udGVudC5jb20vdS82NjQ0ODA3P3Y9ND9zPTEwMCIgd2lkdGg9IjEwMHB4OyIgYWx0PSJFbGkgWWFtbWluZSIvPjxiciAvPjxzdWI+PGI+RWxpIFlhbW1pbmU8L2I+PC9zdWI+PC9hPjxiciAvPjxhIGhyZWY9Imh0dHBzOi8vZ2l0aHViLmNvbS9jaHJpc3RpYW5oZWxsZS9yZWZpdHRlci9pc3N1ZXM/cT1hdXRob3IlM0FlbGl5YW1taW5lIiB0aXRsZT0iQnVnIHJlcG9ydHMiPvCfkJs8L2E+PC90ZD4KICAgICAgPHRkIGFsaWduPSJjZW50ZXIiIHZhbGlnbj0idG9wIiB3aWR0aD0iMTQuMjglIj48YSBocmVmPSJodHRwczovL2dpdGh1Yi5jb20va2FtaS1wb2kiPjxpbWcgc3JjPSJodHRwczovL2F2YXRhcnMuZ2l0aHVidXNlcmNvbnRlbnQuY29tL3UvNDczMjI2OTE/dj00P3M9MTAwIiB3aWR0aD0iMTAwcHg7IiBhbHQ9ImthbWktcG9pIi8+PGJyIC8+PHN1Yj48Yj5rYW1pLXBvaTwvYj48L3N1Yj48L2E+PGJyIC8+PGEgaHJlZj0iI2lkZWFzLWthbWktcG9pIiB0aXRsZT0iSWRlYXMsIFBsYW5uaW5nLCAmIEZlZWRiYWNrIj7wn6SUPC9hPjwvdGQ+CiAgICAgIDx0ZCBhbGlnbj0iY2VudGVyIiB2YWxpZ249InRvcCIgd2lkdGg9IjE0LjI4JSI+PGEgaHJlZj0iaHR0cHM6Ly9naXRodWIuY29tL1hlZXZpcyI+PGltZyBzcmM9Imh0dHBzOi8vYXZhdGFycy5naXRodWJ1c2VyY29udGVudC5jb20vdS81ODM1MDQ0P3Y9ND9zPTEwMCIgd2lkdGg9IjEwMHB4OyIgYWx0PSJYZWV2aXMiLz48YnIgLz48c3ViPjxiPlhlZXZpczwvYj48L3N1Yj48L2E+PGJyIC8+PGEgaHJlZj0iaHR0cHM6Ly9naXRodWIuY29tL2NocmlzdGlhbmhlbGxlL3JlZml0dGVyL2lzc3Vlcz9xPWF1dGhvciUzQVhlZXZpcyIgdGl0bGU9IkJ1ZyByZXBvcnRzIj7wn5CbPC9hPjwvdGQ+CiAgICAgIDx0ZCBhbGlnbj0iY2VudGVyIiB2YWxpZ249InRvcCIgd2lkdGg9IjE0LjI4JSI+PGEgaHJlZj0iaHR0cHM6Ly9naXRodWIuY29tL0RKNGRkaSI+PGltZyBzcmM9Imh0dHBzOi8vYXZhdGFycy5naXRodWJ1c2VyY29udGVudC5jb20vdS8xNjk2MTAyP3Y9ND9zPTEwMCIgd2lkdGg9IjEwMHB4OyIgYWx0PSJESjRkZGkiLz48YnIgLz48c3ViPjxiPkRKNGRkaTwvYj48L3N1Yj48L2E+PGJyIC8+PGEgaHJlZj0iaHR0cHM6Ly9naXRodWIuY29tL2NocmlzdGlhbmhlbGxlL3JlZml0dGVyL2NvbW1pdHM/YXV0aG9yPURKNGRkaSIgdGl0bGU9IkNvZGUiPvCfkrs8L2E+IDxhIGhyZWY9IiNpZGVhcy1ESjRkZGkiIHRpdGxlPSJJZGVhcywgUGxhbm5pbmcsICYgRmVlZGJhY2siPvCfpJQ8L2E+PC90ZD4KICAgIDwvdHI+CiAgICA8dHI+CiAgICAgIDx0ZCBhbGlnbj0iY2VudGVyIiB2YWxpZ249InRvcCIgd2lkdGg9IjE0LjI4JSI+PGEgaHJlZj0iaHR0cHM6Ly9naXRodWIuY29tL2RpcmVuY2FuY2F0YWxrYXlhIj48aW1nIHNyYz0iaHR0cHM6Ly9hdmF0YXJzLmdpdGh1YnVzZXJjb250ZW50LmNvbS91LzU3MjIzNzMyP3Y9ND9zPTEwMCIgd2lkdGg9IjEwMHB4OyIgYWx0PSJkaXJlbmNhbmNhdGFsa2F5YSIvPjxiciAvPjxzdWI+PGI+ZGlyZW5jYW5jYXRhbGtheWE8L2I+PC9zdWI+PC9hPjxiciAvPjxhIGhyZWY9Imh0dHBzOi8vZ2l0aHViLmNvbS9jaHJpc3RpYW5oZWxsZS9yZWZpdHRlci9jb21taXRzP2F1dGhvcj1kaXJlbmNhbmNhdGFsa2F5YSIgdGl0bGU9IkNvZGUiPvCfkrs8L2E+PC90ZD4KICAgICAgPHRkIGFsaWduPSJjZW50ZXIiIHZhbGlnbj0idG9wIiB3aWR0aD0iMTQuMjglIj48YSBocmVmPSJodHRwczovL2dpdGh1Yi5jb20vcm9icGFsbSI+PGltZyBzcmM9Imh0dHBzOi8vYXZhdGFycy5naXRodWJ1c2VyY29udGVudC5jb20vdS8xNDkzOTUzMD92PTQ/cz0xMDAiIHdpZHRoPSIxMDBweDsiIGFsdD0iUm9iZXJ0IFBhbG1xdmlzdCIvPjxiciAvPjxzdWI+PGI+Um9iZXJ0IFBhbG1xdmlzdDwvYj48L3N1Yj48L2E+PGJyIC8+PGEgaHJlZj0iI2lkZWFzLXJvYnBhbG0iIHRpdGxlPSJJZGVhcywgUGxhbm5pbmcsICYgRmVlZGJhY2siPvCfpJQ8L2E+IDxhIGhyZWY9Imh0dHBzOi8vZ2l0aHViLmNvbS9jaHJpc3RpYW5oZWxsZS9yZWZpdHRlci9jb21taXRzP2F1dGhvcj1yb2JwYWxtIiB0aXRsZT0iQ29kZSI+8J+SuzwvYT48L3RkPgogICAgICA8dGQgYWxpZ249ImNlbnRlciIgdmFsaWduPSJ0b3AiIHdpZHRoPSIxNC4yOCUiPjxhIGhyZWY9Imh0dHBzOi8vZ2l0aHViLmNvbS9UaW1vdGh5TWFra2lzb24iPjxpbWcgc3JjPSJodHRwczovL2F2YXRhcnMuZ2l0aHVidXNlcmNvbnRlbnQuY29tL3UvNDkzNDk1MTM/dj00P3M9MTAwIiB3aWR0aD0iMTAwcHg7IiBhbHQ9IlRpbSBNIi8+PGJyIC8+PHN1Yj48Yj5UaW0gTTwvYj48L3N1Yj48L2E+PGJyIC8+PGEgaHJlZj0iaHR0cHM6Ly9naXRodWIuY29tL2NocmlzdGlhbmhlbGxlL3JlZml0dGVyL2NvbW1pdHM/YXV0aG9yPVRpbW90aHlNYWtraXNvbiIgdGl0bGU9IkRvY3VtZW50YXRpb24iPvCfk5Y8L2E+PC90ZD4KICAgICAgPHRkIGFsaWduPSJjZW50ZXIiIHZhbGlnbj0idG9wIiB3aWR0aD0iMTQuMjglIj48YSBocmVmPSJodHRwczovL2dpdGh1Yi5jb20vamFuZm9sYnJlY2h0Ij48aW1nIHNyYz0iaHR0cHM6Ly9hdmF0YXJzLmdpdGh1YnVzZXJjb250ZW50LmNvbS91LzQyMTg2NjA0P3Y9ND9zPTEwMCIgd2lkdGg9IjEwMHB4OyIgYWx0PSJqYW5mb2xicmVjaHQiLz48YnIgLz48c3ViPjxiPmphbmZvbGJyZWNodDwvYj48L3N1Yj48L2E+PGJyIC8+PGEgaHJlZj0iI2lkZWFzLWphbmZvbGJyZWNodCIgdGl0bGU9IklkZWFzLCBQbGFubmluZywgJiBGZWVkYmFjayI+8J+klDwvYT4gPGEgaHJlZj0iaHR0cHM6Ly9naXRodWIuY29tL2NocmlzdGlhbmhlbGxlL3JlZml0dGVyL2NvbW1pdHM/YXV0aG9yPWphbmZvbGJyZWNodCIgdGl0bGU9IkNvZGUiPvCfkrs8L2E+PC90ZD4KICAgICAgPHRkIGFsaWduPSJjZW50ZXIiIHZhbGlnbj0idG9wIiB3aWR0aD0iMTQuMjglIj48YSBocmVmPSJodHRwczovL2dpdGh1Yi5jb20vb3NjLW5zZWd1aW4iPjxpbWcgc3JjPSJodHRwczovL2F2YXRhcnMuZ2l0aHVidXNlcmNvbnRlbnQuY29tL3UvMTMzOTEwMzA5P3Y9ND9zPTEwMCIgd2lkdGg9IjEwMHB4OyIgYWx0PSJOaWNrIFNlZ3VpbiIvPjxiciAvPjxzdWI+PGI+TmljayBTZWd1aW48L2I+PC9zdWI+PC9hPjxiciAvPjxhIGhyZWY9Imh0dHBzOi8vZ2l0aHViLmNvbS9jaHJpc3RpYW5oZWxsZS9yZWZpdHRlci9jb21taXRzP2F1dGhvcj1vc2MtbnNlZ3VpbiIgdGl0bGU9IkNvZGUiPvCfkrs8L2E+PC90ZD4KICAgICAgPHRkIGFsaWduPSJjZW50ZXIiIHZhbGlnbj0idG9wIiB3aWR0aD0iMTQuMjglIj48YSBocmVmPSJodHRwczovL2dpdGh1Yi5jb20vZGF2aWQtYnJpbmstdGFsb2d5Ij48aW1nIHNyYz0iaHR0cHM6Ly9hdmF0YXJzLmdpdGh1YnVzZXJjb250ZW50LmNvbS91LzQzODI4NzM5P3Y9ND9zPTEwMCIgd2lkdGg9IjEwMHB4OyIgYWx0PSJEYXZpZCBCcmluayIvPjxiciAvPjxzdWI+PGI+RGF2aWQgQnJpbms8L2I+PC9zdWI+PC9hPjxiciAvPjxhIGhyZWY9Imh0dHBzOi8vZ2l0aHViLmNvbS9jaHJpc3RpYW5oZWxsZS9yZWZpdHRlci9pc3N1ZXM/cT1hdXRob3IlM0FkYXZpZC1icmluay10YWxvZ3kiIHRpdGxlPSJCdWcgcmVwb3J0cyI+8J+QmzwvYT4gPGEgaHJlZj0iaHR0cHM6Ly9naXRodWIuY29tL2NocmlzdGlhbmhlbGxlL3JlZml0dGVyL2NvbW1pdHM/YXV0aG9yPWRhdmlkLWJyaW5rLXRhbG9neSIgdGl0bGU9IkNvZGUiPvCfkrs8L2E+PC90ZD4KICAgICAgPHRkIGFsaWduPSJjZW50ZXIiIHZhbGlnbj0idG9wIiB3aWR0aD0iMTQuMjglIj48YSBocmVmPSJodHRwczovL2dpdGh1Yi5jb20vZGFtbWl0amFuZXQiPjxpbWcgc3JjPSJodHRwczovL2F2YXRhcnMuZ2l0aHVidXNlcmNvbnRlbnQuY29tL3UvOTUyNzIzP3Y9ND9zPTEwMCIgd2lkdGg9IjEwMHB4OyIgYWx0PSJTdHUgV2lsc29uIi8+PGJyIC8+PHN1Yj48Yj5TdHUgV2lsc29uPC9iPjwvc3ViPjwvYT48YnIgLz48YSBocmVmPSIjaWRlYXMtZGFtbWl0amFuZXQiIHRpdGxlPSJJZGVhcywgUGxhbm5pbmcsICYgRmVlZGJhY2siPvCfpJQ8L2E+IDxhIGhyZWY9Imh0dHBzOi8vZ2l0aHViLmNvbS9jaHJpc3RpYW5oZWxsZS9yZWZpdHRlci9jb21taXRzP2F1dGhvcj1kYW1taXRqYW5ldCIgdGl0bGU9IkNvZGUiPvCfkrs8L2E+PC90ZD4KICAgIDwvdHI+CiAgICA8dHI+CiAgICAgIDx0ZCBhbGlnbj0iY2VudGVyIiB2YWxpZ249InRvcCIgd2lkdGg9IjE0LjI4JSI+PGEgaHJlZj0iaHR0cHM6Ly9naXRodWIuY29tL3NoYXJwemlsbGEiPjxpbWcgc3JjPSJodHRwczovL2F2YXRhcnMuZ2l0aHVidXNlcmNvbnRlbnQuY29tL3UvMTY3NjM2MzQ/dj00P3M9MTAwIiB3aWR0aD0iMTAwcHg7IiBhbHQ9InNoYXJwemlsbGEiLz48YnIgLz48c3ViPjxiPnNoYXJwemlsbGE8L2I+PC9zdWI+PC9hPjxiciAvPjxhIGhyZWY9IiNpZGVhcy1zaGFycHppbGxhIiB0aXRsZT0iSWRlYXMsIFBsYW5uaW5nLCAmIEZlZWRiYWNrIj7wn6SUPC9hPjwvdGQ+CiAgICAgIDx0ZCBhbGlnbj0iY2VudGVyIiB2YWxpZ249InRvcCIgd2lkdGg9IjE0LjI4JSI+PGEgaHJlZj0iaHR0cHM6Ly9naXRodWIuY29tL0phcHBpbmVuIj48aW1nIHNyYz0iaHR0cHM6Ly9hdmF0YXJzLmdpdGh1YnVzZXJjb250ZW50LmNvbS91LzQ0NDA4NDk3P3Y9ND9zPTEwMCIgd2lkdGg9IjEwMHB4OyIgYWx0PSJUYXR1Ii8+PGJyIC8+PHN1Yj48Yj5UYXR1PC9iPjwvc3ViPjwvYT48YnIgLz48YSBocmVmPSJodHRwczovL2dpdGh1Yi5jb20vY2hyaXN0aWFuaGVsbGUvcmVmaXR0ZXIvaXNzdWVzP3E9YXV0aG9yJTNBSmFwcGluZW4iIHRpdGxlPSJCdWcgcmVwb3J0cyI+8J+QmzwvYT48L3RkPgogICAgICA8dGQgYWxpZ249ImNlbnRlciIgdmFsaWduPSJ0b3AiIHdpZHRoPSIxNC4yOCUiPjxhIGhyZWY9Imh0dHA6Ly93d3cucmVzcGF3bnNpdmUuY29tIj48aW1nIHNyYz0iaHR0cHM6Ly9hdmF0YXJzLmdpdGh1YnVzZXJjb250ZW50LmNvbS91LzQyNzIzMDc/dj00P3M9MTAwIiB3aWR0aD0iMTAwcHg7IiBhbHQ9IkrDqXLDqW15IEJSVU4tUElDQVJEIi8+PGJyIC8+PHN1Yj48Yj5Kw6lyw6lteSBCUlVOLVBJQ0FSRDwvYj48L3N1Yj48L2E+PGJyIC8+PGEgaHJlZj0iI2lkZWFzLUplcmVteUJQIiB0aXRsZT0iSWRlYXMsIFBsYW5uaW5nLCAmIEZlZWRiYWNrIj7wn6SUPC9hPjwvdGQ+CiAgICAgIDx0ZCBhbGlnbj0iY2VudGVyIiB2YWxpZ249InRvcCIgd2lkdGg9IjE0LjI4JSI+PGEgaHJlZj0iaHR0cHM6Ly9naXRodWIuY29tL2ViYXJuYXJkIj48aW1nIHNyYz0iaHR0cHM6Ly9hdmF0YXJzLmdpdGh1YnVzZXJjb250ZW50LmNvbS91LzEwNTk2ODM/dj00P3M9MTAwIiB3aWR0aD0iMTAwcHg7IiBhbHQ9IkVkIEJhcm5hcmQiLz48YnIgLz48c3ViPjxiPkVkIEJhcm5hcmQ8L2I+PC9zdWI+PC9hPjxiciAvPjxhIGhyZWY9IiNpZGVhcy1lYmFybmFyZCIgdGl0bGU9IklkZWFzLCBQbGFubmluZywgJiBGZWVkYmFjayI+8J+klDwvYT48L3RkPgogICAgPC90cj4KICA8L3Rib2R5Pgo8L3RhYmxlPgoKPCEtLSBtYXJrZG93bmxpbnQtcmVzdG9yZSAtLT4KPCEtLSBwcmV0dGllci1pZ25vcmUtZW5kIC0tPgoKPCEtLSBBTEwtQ09OVFJJQlVUT1JTLUxJU1Q6RU5EIC0tPgoKIwoKRm9yIHRpcHMgYW5kIHRyaWNrcyBvbiBzb2Z0d2FyZSBkZXZlbG9wbWVudCwgY2hlY2sgb3V0IFtteSBibG9nXShodHRwczovL2NocmlzdGlhbmhlbGxlLmNvbSkKCklmIHlvdSBmaW5kIHRoaXMgdXNlZnVsIGFuZCBmZWVsIGEgYml0IGdlbmVyb3VzIHRoZW4gZmVlbCBmcmVlIHRvIFtidXkgbWUgYSBjb2ZmZWUg4piVXShodHRwczovL3d3dy5idXltZWFjb2ZmZWUuY29tL2NocmlzdGlhbmhlbGxlKQo= + readmeEtag: '"444e3a839248c11c1dfe1072688ab9eefa8b0a37b992b90f90488cecbb2b3f75"' + readmeLastModified: Fri, 12 Jul 2024 12:55:16 GMT repositoryId: 598846021 description: Refit Client API Generator for OpenAPI created: '2023-02-07T23:18:12Z' - updated: '2024-07-11T20:22:48Z' + updated: '2024-07-12T12:55:20Z' language: C# archived: false stars: 160 - watchers: 5 + watchers: 6 forks: 36 owner: christianhelle logo: https://avatars.githubusercontent.com/u/710400?v=4 license: MIT - repoEtag: '"b06cea532aca917064b18af6702b352c17bc65ff566b51cfc6efc16dcbdfa84d"' - repoLastModified: Thu, 11 Jul 2024 20:22:48 GMT + repoEtag: '"a036afbc29072b209c4b350fbccc680082643f11f5efeb9c5f9b49ac46b7997b"' + repoLastModified: Fri, 12 Jul 2024 12:55:20 GMT category: Parsers foundInMaster: true - source: openapi3 tags @@ -10074,7 +10074,7 @@ repositoryId: 543052826 description: Speakeasy CLI - Enterprise developer experience for your API created: '2022-09-29T10:13:15Z' - updated: '2024-07-12T00:37:13Z' + updated: '2024-07-12T18:58:54Z' language: JavaScript archived: false stars: 159 @@ -10083,8 +10083,8 @@ owner: speakeasy-api logo: https://avatars.githubusercontent.com/u/91446104?v=4 license: NOASSERTION - repoEtag: '"7a37c7e9a7b7b2a54463ed2615d6ee46f16d3d8f53cf6cd7653cc4f9c4157d9d"' - repoLastModified: Fri, 12 Jul 2024 00:37:13 GMT + repoEtag: '"f49f438701087462cbb0ecd81ff8e4ecf46ff6eebec87b0170612a34cbdc6ff4"' + repoLastModified: Fri, 12 Jul 2024 18:58:54 GMT category: Parsers foundInMaster: true - source: @@ -10163,7 +10163,7 @@ owner: deeptest-com logo: https://avatars.githubusercontent.com/u/127812389?v=4 license: Apache-2.0 - repoEtag: '"26cbb7846ef1bf90dd548ebaa03a7f832b9264d03724fcecd8dda12e8df3d48b"' + repoEtag: '"7b32b69afb9ffe7f1031d1aa436759f2207dedbeb28bda1904f67f061c572a17"' repoLastModified: Wed, 10 Jul 2024 18:58:03 GMT category: Server Implementations foundInMaster: true @@ -10370,17 +10370,17 @@ repositoryId: 691100358 description: Actix-web wrapper for automatic OpenAPI 3.0 documentation generation. created: '2023-09-13T13:54:51Z' - updated: '2024-07-11T19:55:29Z' + updated: '2024-07-12T17:52:13Z' language: Rust archived: false - stars: 116 + stars: 117 watchers: 5 forks: 3 owner: netwo-io logo: https://avatars.githubusercontent.com/u/64151169?v=4 license: MIT - repoEtag: '"3b39348785d7f0d90ecb7eba28ab6a03af91dc6ef0a8594dd9ddaa21088ee8d7"' - repoLastModified: Thu, 11 Jul 2024 19:55:29 GMT + repoEtag: '"36d834dad47a83d3e492fbbe9b1ef189df3ae92f6deefa0f617226b0dace0dab"' + repoLastModified: Fri, 12 Jul 2024 17:52:13 GMT category: Parsers foundInMaster: true - source: openapi3 tags @@ -10709,16 +10709,16 @@ 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-07-11T03:33:34Z' + updated: '2024-07-12T03:32:07Z' language: JavaScript archived: false stars: 92 - watchers: 11 + watchers: 12 forks: 26 owner: OAI logo: https://avatars.githubusercontent.com/u/16343502?v=4 - repoEtag: '"b0906d7fee9b35fb849ff14f320a19d9d3df7fe33e4fd617bc44e27d635668a3"' - repoLastModified: Thu, 11 Jul 2024 03:33:34 GMT + repoEtag: '"a4a98415fde016522c1388007a38e434b5727a62597b577dbf0b3480756e72ce"' + repoLastModified: Fri, 12 Jul 2024 03:32:07 GMT category: Server Implementations foundInMaster: true oldLocations: @@ -11041,7 +11041,7 @@ owner: jellyfin logo: https://avatars.githubusercontent.com/u/45698031?v=4 license: LGPL-3.0 - repoEtag: '"24c727144141be8021417f9ea6dfbb94617b2ca0c24f7827de3f21e40e6bcb72"' + repoEtag: '"16d78cf3ae46d4c30b6906ca48bcc1c4753174c5103d8b9f243638643975ee2a"' repoLastModified: Sat, 06 Jul 2024 06:08:10 GMT foundInMaster: true category: Testing @@ -11223,16 +11223,16 @@ repositoryId: 249737066 description: Semantic parser for API specifications created: '2020-03-24T14:55:51Z' - updated: '2024-07-12T00:59:52Z' + updated: '2024-07-12T23:49:55Z' language: TypeScript archived: false stars: 66 - watchers: 10 - forks: 14 + watchers: 11 + forks: 15 owner: swagger-api logo: https://avatars.githubusercontent.com/u/7658037?v=4 - repoEtag: '"0daf96692c85ad3f3a9716edc067addc6b36757e2baa7331c45c58195c5d3861"' - repoLastModified: Fri, 12 Jul 2024 00:59:52 GMT + repoEtag: '"69b8b27df6b5b1ead150f520b02782466d918006b850a9bac22a430a8dfcbe82"' + repoLastModified: Fri, 12 Jul 2024 23:49:55 GMT category: Parsers foundInMaster: true - source: openapi3 tags @@ -11325,17 +11325,17 @@ repositoryId: 714590129 description: Generate .http files from OpenAPI (Swagger) specifications created: '2023-11-05T10:19:39Z' - updated: '2024-07-11T07:48:28Z' + updated: '2024-07-12T10:40:39Z' language: C# archived: false - stars: 62 + stars: 63 watchers: 2 forks: 4 owner: christianhelle logo: https://avatars.githubusercontent.com/u/710400?v=4 license: MIT - repoEtag: '"87321ee62f4def7d7a2e5755e16928e1155ad1e9ea01bcef24ff920a189be1e2"' - repoLastModified: Thu, 11 Jul 2024 07:48:28 GMT + repoEtag: '"2faf7a128a0c6990f44ec3ff369c02b42d56df52a814e003e203dcd6942da11d"' + repoLastModified: Fri, 12 Jul 2024 10:40:39 GMT category: Parsers foundInMaster: true - source: openapi3 tags @@ -11914,7 +11914,7 @@ owner: swaggerexpert logo: https://avatars.githubusercontent.com/u/172408630?v=4 license: BSD-3-Clause - repoEtag: '"36cbbc68823a61c3cace98421bb28cb5a7fd31f817e0be95d82e6b42794807c7"' + repoEtag: '"4702b5d3e6ef1d3b4927689e156cb198bba6f67c438153f49cb545a18d77e15d"' repoLastModified: Wed, 10 Jul 2024 23:15:43 GMT category: Server Implementations foundInMaster: true @@ -12080,11 +12080,11 @@ archived: false stars: 42 watchers: 2 - forks: 16 + forks: 17 owner: alexferl logo: https://avatars.githubusercontent.com/u/3533424?v=4 license: MIT - repoEtag: '"779e00192688642ad0c735f4ddc60b58c0c61c0a1e5bd48c8ecd17197c589ee2"' + repoEtag: '"2dc265e8d2514a11a390eee80e5ca098d44511c74c80d98e4757727648128e0f"' repoLastModified: Sat, 06 Jul 2024 23:55:37 GMT category: Server Implementations foundInMaster: true @@ -12163,7 +12163,7 @@ owner: Backbase logo: https://avatars.githubusercontent.com/u/1914334?v=4 license: NOASSERTION - repoEtag: '"fa769a1275daf3884942d5df3f235a2f06c568b1716650c8c62744eccabaacbd"' + repoEtag: '"ac1641d4467cee6428d2af7b1102a89d39040caf96bb1d0de18731bad2e29b4b"' repoLastModified: Fri, 07 Jun 2024 10:52:41 GMT foundInMaster: true category: SDK @@ -12584,7 +12584,7 @@ repositoryId: 273586856 description: Rust OpenAPI 3.0 docs generator created: '2020-06-19T21:08:55Z' - updated: '2024-04-22T10:14:59Z' + updated: '2024-07-12T23:19:19Z' language: Rust archived: false stars: 34 @@ -12593,8 +12593,8 @@ owner: Rexagon logo: https://avatars.githubusercontent.com/u/7278479?v=4 license: Apache-2.0 - repoEtag: '"b53508517b8e4b018bdd9ebdb5134037e2602265ac406ede4c082a86686fd649"' - repoLastModified: Mon, 22 Apr 2024 10:14:59 GMT + repoEtag: '"c0bf07e83f88d71b06bb07b5042275f7e7815142aa4cf4dbc102151bb69adbfe"' + repoLastModified: Fri, 12 Jul 2024 23:19:19 GMT foundInMaster: true category: Parsers id: 06fd1d157b70af7d99fc62cfd47a1723 @@ -12655,7 +12655,7 @@ owner: Redocly logo: https://avatars.githubusercontent.com/u/32099856?v=4 license: MIT - repoEtag: '"146f090ee2bbb2edc96cb8f799328c6552313ceeac051e179cf4426a9aded938"' + repoEtag: '"cdef1f672181498fc99d1ed581444040a40b1986810ccfcd6bec1670fc02b095"' repoLastModified: Fri, 07 Jun 2024 16:37:00 GMT category: Parsers foundInMaster: true @@ -12677,12 +12677,12 @@ language: JavaScript archived: false stars: 33 - watchers: 3 + watchers: 4 forks: 9 owner: data-fair logo: https://avatars.githubusercontent.com/u/83776320?v=4 license: AGPL-3.0 - repoEtag: '"21121a995726422c7db328f55618475addfe50b7e85753719321a43f5225e737"' + repoEtag: '"f400d3988d29e5e32878b4b8694e0c931b2a90f0dd267fd035697c02edd6fd0a"' repoLastModified: Fri, 28 Jun 2024 08:46:32 GMT foundInMaster: true category: @@ -12839,7 +12839,7 @@ owner: kota65535 logo: https://avatars.githubusercontent.com/u/10975834?v=4 license: MIT - repoEtag: '"e13614c60c4f9c6ae1b0cfcf3724431e1812e5bb782d08968c27e446b599f17d"' + repoEtag: '"3592023f4bfc8d9b417a69a76895d88d1f0db8ac460b0201e1f0fd9d10867cad"' repoLastModified: Tue, 23 Apr 2024 08:20:39 GMT category: Parsers foundInMaster: true @@ -13067,7 +13067,7 @@ repositoryId: 393620909 description: RESTful API for managing a school created: '2021-08-07T08:06:01Z' - updated: '2024-07-11T13:34:42Z' + updated: '2024-07-12T07:55:48Z' language: Java archived: false stars: 27 @@ -13076,8 +13076,8 @@ owner: hei-school logo: https://avatars.githubusercontent.com/u/88576095?v=4 license: MIT - repoEtag: '"d71f1aa48228d2a7e0a46b5141a43a4faea9a4e71d51d8b552126eeacc99a57a"' - repoLastModified: Thu, 11 Jul 2024 13:34:42 GMT + repoEtag: '"e6304ec14667a531b20c83141a748a0679308b2580cf67269feae3910e21ca02"' + repoLastModified: Fri, 12 Jul 2024 07:55:48 GMT foundInMaster: true category: Code Generators id: bf98240ea893afa32efc180fb73dd5b6 @@ -13729,7 +13729,7 @@ repositoryId: 453839137 description: Swagger for chia https://dkackman.github.io/chia-api/ created: '2022-01-31T00:32:10Z' - updated: '2024-07-04T21:00:19Z' + updated: '2024-07-12T21:24:27Z' language: Mustache archived: false stars: 21 @@ -13738,8 +13738,8 @@ owner: dkackman logo: https://avatars.githubusercontent.com/u/5160233?v=4 license: Apache-2.0 - repoEtag: '"723728078dd3633d251953d95f551db3ef6213e626fa3436d4ef533922039d87"' - repoLastModified: Thu, 04 Jul 2024 21:00:19 GMT + repoEtag: '"256e0f8512b747c2437402c02b5e4affbf2d2be9e652aafc4e9a3fa62ae2a89f"' + repoLastModified: Fri, 12 Jul 2024 21:24:27 GMT foundInMaster: true category: Server id: af8d79e99ec00e2f41229885f84248da @@ -14123,17 +14123,17 @@ repositoryId: 98350934 description: Mockoon application official website repository and documentation created: '2017-07-25T21:19:22Z' - updated: '2024-07-11T14:59:32Z' + updated: '2024-07-12T13:16:44Z' language: TypeScript archived: false stars: 19 - watchers: 3 + watchers: 4 forks: 14 owner: mockoon logo: https://avatars.githubusercontent.com/u/49429147?v=4 license: NOASSERTION - repoEtag: '"c552c369f9c454db12dfcac5ed775681fdab1e85cc84061298d288a69d2abe6a"' - repoLastModified: Thu, 11 Jul 2024 14:59:32 GMT + repoEtag: '"178f9cbb6c9b9801c0c1bdd3d156c25a2218292f5c3d79d40373cb812fdcd7d9"' + repoLastModified: Fri, 12 Jul 2024 13:16:44 GMT foundInMaster: true category: Testing id: 84d3391fa9deedcd6398666ba504eb78 @@ -15194,17 +15194,17 @@ repositoryId: 443839740 description: 'Python OpenAPI3 client/validator w\ {a,}syncio ' created: '2022-01-02T18:23:26Z' - updated: '2024-07-09T09:09:17Z' + updated: '2024-07-12T13:47:23Z' language: Python archived: false stars: 14 - watchers: 2 + watchers: 3 forks: 6 owner: commonism logo: https://avatars.githubusercontent.com/u/164513?v=4 license: BSD-3-Clause - repoEtag: '"a08c5661ca12388b7553d1ba9133e8201003ef378ea449722f406c4332e1a20a"' - repoLastModified: Tue, 09 Jul 2024 09:09:17 GMT + repoEtag: '"e4b8bd33e9e9bde3356e9de0aa325b0d5588de8c703207c35d869d3642a28c70"' + repoLastModified: Fri, 12 Jul 2024 13:47:23 GMT foundInMaster: true id: f7fe65d08545a563279e1526fe797380 v3: true @@ -15473,7 +15473,7 @@ Yapily’s OpenAPI Specification. Use this complete definition of our API to generate client libraries in the language of your choice. created: '2022-01-11T16:20:08Z' - updated: '2024-07-09T13:29:00Z' + updated: '2024-07-12T15:31:21Z' language: null archived: false stars: 13 @@ -15481,8 +15481,8 @@ forks: 2 owner: yapily logo: https://avatars.githubusercontent.com/u/36482918?v=4 - repoEtag: '"7c0f29e275d505a50c4113a16d3328698dca5f87dd783ea77cfc287bea01840b"' - repoLastModified: Tue, 09 Jul 2024 13:29:00 GMT + repoEtag: '"a62d410108915fd076105dbd821a1b43c99dc0cc6e9a34e729e2bcf9a480c6e4"' + repoLastModified: Fri, 12 Jul 2024 15:31:21 GMT foundInMaster: true category: - SDK @@ -15874,7 +15874,7 @@ Delightful API development: Focused on developer experience and performance. created: '2021-12-16T16:23:45Z' - updated: '2024-04-22T20:05:39Z' + updated: '2024-07-13T01:09:27Z' language: TypeScript archived: false stars: 11 @@ -15883,8 +15883,8 @@ owner: Jnig logo: https://avatars.githubusercontent.com/u/3729585?v=4 license: MIT - repoEtag: '"26cc67ccba9207ded7f7842615817d53be15ec5520f01658ffe01772b63e68d4"' - repoLastModified: Mon, 22 Apr 2024 20:05:39 GMT + repoEtag: '"5602c39a59174085500f371c0e71e85f0f1e229005d48da3f53c31f97d10af75"' + repoLastModified: Sat, 13 Jul 2024 01:09:27 GMT category: - Data Validators - Parsers @@ -16707,7 +16707,7 @@ owner: overflowdigital logo: https://avatars.githubusercontent.com/u/93914478?v=4 license: MIT - repoEtag: '"5801acd003606fb7d47db06815f4de0942573d20baf82e08f6b1ea1ac368e23f"' + repoEtag: '"3d807fdef80d4e923222a9559fac6ca90af9c0998f8c1004030b41c4a52cd212"' repoLastModified: Tue, 03 Oct 2023 10:36:08 GMT category: Server Implementations foundInMaster: true @@ -16908,17 +16908,17 @@ OpenAPI description for MDS data feeds, managed by the Open Mobility Foundation. created: '2023-02-03T18:55:31Z' - updated: '2023-11-09T16:50:13Z' + updated: '2024-07-12T19:24:55Z' language: Python archived: false - stars: 8 + stars: 9 watchers: 2 forks: 2 owner: openmobilityfoundation logo: https://avatars.githubusercontent.com/u/52187191?v=4 license: NOASSERTION - repoEtag: '"f32bb0be67d42c3b87492fd0d2e215c3ecefaee82ed970461ad9970d0595f2d1"' - repoLastModified: Thu, 09 Nov 2023 16:50:13 GMT + repoEtag: '"e5cc2b6fbdb3e9ffb3f00c3212c376c24e787d119c1b053aa25262e58453d9f0"' + repoLastModified: Fri, 12 Jul 2024 19:24:55 GMT category: - Parsers - Server Implementations @@ -17080,13 +17080,13 @@ id: 6c315a3d79c2bbf8ff1d1567f057f64b repositoryMetadata: base64Readme: >- - IyBMYXBpZGFyeQoKWyFbdGVzdF0oaHR0cHM6Ly9naXRodWIuY29tL3B5dGhvbi1sYXBpZGFyeS9sYXBpZGFyeS9hY3Rpb25zL3dvcmtmbG93cy90ZXN0LnlhbWwvYmFkZ2Uuc3ZnKV0oaHR0cHM6Ly9naXRodWIuY29tL3B5dGhvbi1sYXBpZGFyeS9sYXBpZGFyeS9hY3Rpb25zL3dvcmtmbG93cy90ZXN0LnlhbWwpCgpQeXRob24gRFNMIGZvciBXZWIgQVBJIGNsaWVudHMuCgpBbHNvIGNoZWNrIFtsYXBpZGFyeS1yZW5kZXJdKGh0dHBzOi8vZ2l0aHViLmNvbS9weXRob24tbGFwaWRhcnkvbGFwaWRhcnktcmVuZGVyLyksCmEgY29tbWFuZCBsaW5lIHByb2dyYW0gdGhhdCBnZW5lcmF0ZXMgTGFwaWRhcnkgY2xpZW50cyBmcm9tIE9wZW5BUEkuCg== - readmeEtag: '"2ed126359b875e1e559347c9343ea8a75422096e6a57a0afb99af4adfb72fca6"' - readmeLastModified: Tue, 04 Jun 2024 21:29:00 GMT + IyBMYXBpZGFyeQoKWyFbdGVzdF0oaHR0cHM6Ly9naXRodWIuY29tL3B5dGhvbi1sYXBpZGFyeS9sYXBpZGFyeS9hY3Rpb25zL3dvcmtmbG93cy90ZXN0X3B1Ymxpc2gueWFtbC9iYWRnZS5zdmcpXShodHRwczovL2dpdGh1Yi5jb20vcHl0aG9uLWxhcGlkYXJ5L2xhcGlkYXJ5L2FjdGlvbnMvd29ya2Zsb3dzL3Rlc3RfcHVibHNoLnlhbWwpCgpQeXRob24gRFNMIGZvciBXZWIgQVBJIGNsaWVudHMuCgpBbHNvIGNoZWNrIFtsYXBpZGFyeS1yZW5kZXJdKGh0dHBzOi8vZ2l0aHViLmNvbS9weXRob24tbGFwaWRhcnkvbGFwaWRhcnktcmVuZGVyLyksCmEgY29tbWFuZCBsaW5lIHByb2dyYW0gdGhhdCBnZW5lcmF0ZXMgTGFwaWRhcnkgY2xpZW50cyBmcm9tIE9wZW5BUEkuCg== + readmeEtag: '"d5e7d9a5a54b880e939dd486ffadf9240726d78a0ef06a17a9be5ef03b133c7c"' + readmeLastModified: Fri, 12 Jul 2024 22:48:37 GMT repositoryId: 530807671 description: Write Web API clients using annotations in python created: '2022-08-30T19:50:12Z' - updated: '2024-07-02T09:17:45Z' + updated: '2024-07-12T22:48:45Z' language: Python archived: false stars: 8 @@ -17095,8 +17095,8 @@ owner: python-lapidary logo: https://avatars.githubusercontent.com/u/111730600?v=4 license: MIT - repoEtag: '"ddb0d62e21371c17b949637b3bc8756b196ec7cb0e566ce4699881e47ed8427d"' - repoLastModified: Tue, 02 Jul 2024 09:17:45 GMT + repoEtag: '"88d3ac5cab06a783acf8f0a4366322ebe016982ff58480c1a5a40c26cd50fd94"' + repoLastModified: Fri, 12 Jul 2024 22:48:45 GMT category: - Parsers - SDK @@ -17115,16 +17115,16 @@ repositoryId: 740729887 description: The easiest way to share OpenAPI files created: '2024-01-09T00:11:59Z' - updated: '2024-07-09T15:45:29Z' + updated: '2024-07-12T15:56:34Z' language: Vue archived: false stars: 8 watchers: 2 - forks: 2 + forks: 3 owner: scalar logo: https://avatars.githubusercontent.com/u/301879?v=4 - repoEtag: '"9f5705410b3ee72ec62b30c7237ef88bedec38335fa3a97b6a91e5cdacd24ac4"' - repoLastModified: Tue, 09 Jul 2024 15:45:29 GMT + repoEtag: '"ecc80841651c69bee9107735332f681a0978528b99e9f5ae3b5dc8e8d5b90088"' + repoLastModified: Fri, 12 Jul 2024 15:56:34 GMT category: Server Implementations foundInMaster: true - source: openapi3 tags @@ -17240,23 +17240,23 @@ v3: true repositoryMetadata: base64Readme: >- - PiAjIPCfk6ZUaGlzIHJlcG9zaXRvcnkgaGFzIGJlZW4gYXJjaGl2ZWQuIFlvdSB3aWxsIGZpbmQgTW9ja29vbidzIG5ldyBtb25vcmVwbyBbaGVyZV0oaHR0cHM6Ly9naXRodWIuY29tL21vY2tvb24vbW9ja29vbikuCgo8ZGl2IGFsaWduPSJjZW50ZXIiPgogIDxhIGhyZWY9Imh0dHBzOi8vbW9ja29vbi5jb20iIGFsdD0ibW9ja29vbiBsb2dvIj4KICAgIDxpbWcgd2lkdGg9IjIwMCIgaGVpZ2h0PSIyMDAiIHNyYz0iaHR0cHM6Ly9tb2Nrb29uLmNvbS9pbWFnZXMvbG9nby1zcXVhcmUtY29tbW9ucy1zZXJ2ZXIucG5nIj4KICA8L2E+CiAgPGJyPgogIDxhIGhyZWY9Imh0dHBzOi8vbW9ja29vbi5jb20vI2Rvd25sb2FkIj48aW1nIHNyYz0iaHR0cHM6Ly9pbWcuc2hpZWxkcy5pby9iYWRnZS9Eb3dubG9hZCUyMGFwcC1Hby1ncmVlbi5zdmc/c3R5bGU9ZmxhdC1zcXVhcmUmY29sb3JCPTE5OTdjNiIvPjwvYT4KICA8YSBocmVmPSJodHRwczovL21vY2tvb24uY29tLyI+PGltZyBzcmM9Imh0dHBzOi8vaW1nLnNoaWVsZHMuaW8vYmFkZ2UvV2Vic2l0ZS1Hby1ncmVlbi5zdmc/c3R5bGU9ZmxhdC1zcXVhcmUmY29sb3JCPTE5OTdjNiIvPjwvYT4KICA8YSBocmVmPSJodHRwOi8vZWVwdXJsLmNvbS9kc2tCMlgiPjxpbWcgc3JjPSJodHRwczovL2ltZy5zaGllbGRzLmlvL2JhZGdlL05ld3NsZXR0ZXItU3Vic2NyaWJlLWdyZWVuLnN2Zz9zdHlsZT1mbGF0LXNxdWFyZSIvPjwvYT4KICA8YSBocmVmPSJodHRwczovL3R3aXR0ZXIuY29tL0dldE1vY2tvb24iPjxpbWcgc3JjPSJodHRwczovL2ltZy5zaGllbGRzLmlvL2JhZGdlL1R3aXR0ZXJfQEdldE1vY2tvb24tZm9sbG93LWJsdWUuc3ZnP3N0eWxlPWZsYXQtc3F1YXJlJmNvbG9yQj0xZGExZjIiLz48L2E+CiAgPGEgaHJlZj0iaHR0cHM6Ly9kaXNjb3JkLmdnL011dFJwc1k1Z0UiPjxpbWcgc3JjPSJodHRwczovL2ltZy5zaGllbGRzLmlvL2JhZGdlL0Rpc2NvcmQtZ28tYmx1ZS5zdmc/c3R5bGU9ZmxhdC1zcXVhcmUmY29sb3JBPTZjODRkOSZjb2xvckI9MWRhMWYyIi8+PC9hPgogIDxicj4KICA8YnI+CiAgPGgxPkBNb2Nrb29uL2NvbW1vbnMtc2VydmVyPC9oMT4KPC9kaXY+CgpNb2Nrb29uJ3MgQ29tbW9ucyBzZXJ2ZXIgbGlicmFyeSByZWdyb3VwcyBNb2Nrb29uJ3Mgc2hhcmVkIGNvZGUgdXNlZCBpbiB0aGUgW21haW4gYXBwbGljYXRpb25dKGh0dHBzOi8vZ2l0aHViLmNvbS9tb2Nrb29uL21vY2tvb24pIGFuZCB0aGUgW0NMSV0oaHR0cHM6Ly9naXRodWIuY29tL21vY2tvb24vY2xpKS4gSXQgY29udGFpbnMgbW9zdGx5ICJzZXJ2ZXIgc2lkZSIgY29kZSBkZXNpZ25lZCB0byBiZSB1c2VkIGluIGEgTm9kZS5qcyBlbnZpcm9ubWVudHMuCgotLS0KCiMjIFN1cHBvcnQvZmVlZGJhY2sKCllvdSBjYW4gZGlzY3VzcyBhbGwgdGhpbmdzIHJlbGF0ZWQgdG8gTW9ja29vbiwgYW5kIGFzayBmb3IgaGVscCwgb24gdGhlIFttYWluIGFwcGxpY2F0aW9uIGNvbW11bml0eV0oaHR0cHM6Ly9naXRodWIuY29tL21vY2tvb24vbW9ja29vbi9kaXNjdXNzaW9ucykgb3IgdGhlIFtDTEkgY29tbXVuaXR5XShodHRwczovL2dpdGh1Yi5jb20vbW9ja29vbi9jbGkvZGlzY3Vzc2lvbnMpLiBJdCdzIGFsc28gYSBnb29kIHBsYWNlIHRvIGRpc2N1c3MgYnVncyBhbmQgZmVhdHVyZSByZXF1ZXN0cyBiZWZvcmUgb3BlbmluZyBhbiBpc3N1ZSBvbiB0aGlzIHJlcG9zaXRvcnkuIEZvciBtb3JlIGNoYXQtbGlrZSBkaXNjdXNzaW9ucywgeW91IGNhbiBhbHNvIGpvaW4gb3VyIFtEaXNjb3JkIHNlcnZlcl0oaHR0cHM6Ly9kaXNjb3JkLmdnL011dFJwc1k1Z0UpLgoKIyMgQ29udHJpYnV0aW5nCgpJZiB5b3UgYXJlIGludGVyZXN0ZWQgaW4gY29udHJpYnV0aW5nIHRvIE1vY2tvb24sIHBsZWFzZSB0YWtlIGEgbG9vayBhdCB0aGUgbWFpbiBbY29udHJpYnV0aW5nIGd1aWRlbGluZXNdKGh0dHBzOi8vZ2l0aHViLmNvbS9tb2Nrb29uL21vY2tvb24vYmxvYi9tYWluL0NPTlRSSUJVVElORy5tZCkgYW5kIHRoZSBbb25lcyBzcGVjaWZpYyB0byB0aGlzIHJlcG9zaXRvcnldKGh0dHBzOi8vZ2l0aHViLmNvbS9tb2Nrb29uL2NvbW1vbnMtc2VydmVyL2Jsb2IvbWFpbi9DT05UUklCVVRJTkcubWQpLgoKUGxlYXNlIGFsc28gdGFrZSBhIGxvb2sgYXQgb3VyIFtDb2RlIG9mIENvbmR1Y3RdKGh0dHBzOi8vZ2l0aHViLmNvbS9tb2Nrb29uL2NvbW1vbnMtc2VydmVyL2Jsb2IvbWFpbi9DT0RFX09GX0NPTkRVQ1QubWQpLgoKIyMgRG9jdW1lbnRhdGlvbgoKWW91IHdpbGwgZmluZCBNb2Nrb29uJ3MgW2RvY3VtZW50YXRpb25dKGh0dHBzOi8vbW9ja29vbi5jb20vZG9jcy9sYXRlc3QpIG9uIHRoZSBvZmZpY2lhbCB3ZWJzaXRlLiBJdCBjb3ZlcnMgTW9ja29vbidzIG1vc3QgY29tcGxleCBmZWF0dXJlcy4gRmVlbCBmcmVlIHRvIGNvbnRyaWJ1dGUgb3IgYXNrIGZvciBuZXcgdG9waWNzIHRvIGJlIGNvdmVyZWQuCgojIyBSb2FkbWFwCgpJZiB5b3Ugd2FudCB0byBrbm93IHdoYXQgd2lsbCBiZSBjb21pbmcgaW4gdGhlIG5leHQgcmVsZWFzZSB5b3UgY2FuIGNoZWNrIHRoZSBnbG9iYWwgW1JvYWRtYXBdKGh0dHBzOi8vZ2l0aHViLmNvbS9vcmdzL21vY2tvb24vcHJvamVjdHMvMikuCgpOZXcgcmVsZWFzZXMgd2lsbCBiZSBhbm5vdW5jZWQgb24gTW9ja29vbidzIFtUd2l0dGVyIGFjY291bnQgQEdldE1vY2tvb25dKGh0dHBzOi8vdHdpdHRlci5jb20vR2V0TW9ja29vbikgYW5kIHRocm91Z2ggdGhlIG5ld3NsZXR0ZXIgdG8gd2hpY2ggeW91IGNhbiBzdWJzY3JpYmUgW2hlcmVdKGh0dHA6Ly9lZXB1cmwuY29tL2Rza0IyWCkuCg== - readmeEtag: '"5d36b6c4c8a03db6f1469f5e52c21e5bbce67586d7285d9254bc4d4d087693d1"' - readmeLastModified: Mon, 28 Mar 2022 19:39:54 GMT + PiAjIPCfk6ZUaGlzIHJlcG9zaXRvcnkgaGFzIGJlZW4gYXJjaGl2ZWQuIFdlIGtlZXAgaXQgZm9yIGhpc3RvcmljYWwgcmVhc29ucy4gWW91IHdpbGwgZmluZCBNb2Nrb29uJ3MgbmV3IG1vbm9yZXBvIFtoZXJlXShodHRwczovL2dpdGh1Yi5jb20vbW9ja29vbi9tb2Nrb29uKS4KCjxkaXYgYWxpZ249ImNlbnRlciI+CiAgPGEgaHJlZj0iaHR0cHM6Ly9tb2Nrb29uLmNvbSIgYWx0PSJtb2Nrb29uIGxvZ28iPgogICAgPGltZyB3aWR0aD0iMjAwIiBoZWlnaHQ9IjIwMCIgc3JjPSJodHRwczovL21vY2tvb24uY29tL2ltYWdlcy9sb2dvLXNxdWFyZS1hcHAucG5nIj4KICA8L2E+CiAgPGJyPgogIDxhIGhyZWY9Imh0dHBzOi8vbW9ja29vbi5jb20vIj48aW1nIHNyYz0iaHR0cHM6Ly9pbWcuc2hpZWxkcy5pby9iYWRnZS9XZWJzaXRlLUdvLWdyZWVuLnN2Zz9zdHlsZT1mbGF0LXNxdWFyZSZjb2xvckI9MTk5N2M2Ii8+PC9hPgogIDxhIGhyZWY9Imh0dHBzOi8vbW9ja29vbi5jb20vbmV3c2xldHRlci8iPjxpbWcgc3JjPSJodHRwczovL2ltZy5zaGllbGRzLmlvL2JhZGdlL05ld3NsZXR0ZXItU3Vic2NyaWJlLWdyZWVuLnN2Zz9zdHlsZT1mbGF0LXNxdWFyZSIvPjwvYT4KICA8YSBocmVmPSJodHRwczovL3R3aXR0ZXIuY29tL0dldE1vY2tvb24iPjxpbWcgc3JjPSJodHRwczovL2ltZy5zaGllbGRzLmlvL2JhZGdlL1R3aXR0ZXJfQEdldE1vY2tvb24tZm9sbG93LWJsdWUuc3ZnP3N0eWxlPWZsYXQtc3F1YXJlJmNvbG9yQj0xZGExZjIiLz48L2E+CiAgPGEgaHJlZj0iW2h0dHBzOi8vZGlzY29yZC5nZy9GdEpqa2VqS0dwXShodHRwczovL21vY2tvb24uY29tL2Rpc2NvcmQvKSI+PGltZyBzcmM9Imh0dHBzOi8vaW1nLnNoaWVsZHMuaW8vYmFkZ2UvRGlzY29yZC1nby1ibHVlLnN2Zz9zdHlsZT1mbGF0LXNxdWFyZSZjb2xvckE9NmM4NGQ5JmNvbG9yQj0xZGExZjIiLz48L2E+ICAKICA8YnI+CiAgPGJyPgogIDxoMT5Nb2Nrb29uOiBhd2Vzb21lIEFQSSBtb2NraW5nPC9oMT4KPC9kaXY+CgojIyBNb2Nrb29uJ3MgZG9jdW1lbnRhdGlvbgoKWW91IHdpbGwgZmluZCBNb2Nrb29uJ3MgW2RvY3VtZW50YXRpb25dKGh0dHBzOi8vbW9ja29vbi5jb20vZG9jcy9sYXRlc3QvYWJvdXQvKSBvbiB0aGUgb2ZmaWNpYWwgd2Vic2l0ZS4gSXQgY292ZXJzIE1vY2tvb24ncyBtb3N0IGNvbXBsZXggZmVhdHVyZXMuIEZlZWwgZnJlZSB0byBjb250cmlidXRlIG9yIGFzayBmb3IgbmV3IHRvcGljcyB0byBiZSBjb3ZlcmVkLgoKIyMgQ2hhbmdlbG9ncwoKWW91IHdpbGwgZmluZCBNb2Nrb29uIGFwcGxpY2F0aW9ucyBbY2hhbmdlbG9nc10oaHR0cHM6Ly9tb2Nrb29uLmNvbS9yZWxlYXNlcy8pIG9uIHRoZSBvZmZpY2lhbCB3ZWJzaXRlLgoKIyMgU3VwcG9ydC9mZWVkYmFjawoKWW91IGNhbiBkaXNjdXNzIGFsbCB0aGluZ3MgcmVsYXRlZCB0byBNb2Nrb29uIGFuZCBhc2sgZm9yIGhlbHAgb24gdGhlIFtvZmZpY2lhbCBjb21tdW5pdHldKGh0dHBzOi8vZ2l0aHViLmNvbS9tb2Nrb29uL21vY2tvb24vZGlzY3Vzc2lvbnMpLiBJdCdzIGFsc28gYSBnb29kIHBsYWNlIHRvIGRpc2N1c3MgYnVncyBhbmQgZmVhdHVyZSByZXF1ZXN0cyBiZWZvcmUgb3BlbmluZyBhbiBpc3N1ZSBvbiB0aGlzIHJlcG9zaXRvcnkuIEZvciBtb3JlIGNoYXQtbGlrZSBkaXNjdXNzaW9ucywgeW91IGNhbiBhbHNvIGpvaW4gb3VyIFtEaXNjb3JkIHNlcnZlcl0oaHR0cHM6Ly9kaXNjb3JkLmdnL0Z0SmprZWpLR3ApLgoKIyMgQ29udHJpYnV0aW5nCgpJZiB5b3UgYXJlIGludGVyZXN0ZWQgaW4gY29udHJpYnV0aW5nIHRvIE1vY2tvb24sIHBsZWFzZSB0YWtlIGEgbG9vayBhdCB0aGUgW2NvbnRyaWJ1dGluZyBndWlkZWxpbmVzXShodHRwczovL2dpdGh1Yi5jb20vbW9ja29vbi9tb2Nrb29uL2Jsb2IvbWFpbi9DT05UUklCVVRJTkcubWQpLgoKUGxlYXNlIGFsc28gdGFrZSBhIGxvb2sgYXQgb3VyIFtDb2RlIG9mIENvbmR1Y3RdKGh0dHBzOi8vZ2l0aHViLmNvbS9tb2Nrb29uL21vY2tvb24vYmxvYi9tYWluL0NPREVfT0ZfQ09ORFVDVC5tZCkuCgojIyBSb2FkbWFwCgpJZiB5b3Ugd2FudCB0byBrbm93IHdoYXQgd2lsbCBiZSBjb21pbmcgaW4gdGhlIG5leHQgcmVsZWFzZSB5b3UgY2FuIGNoZWNrIHRoZSBnbG9iYWwgW1JvYWRtYXBdKGh0dHBzOi8vbW9ja29vbi5jb20vcHVibGljLXJvYWRtYXAvKS4KCk5ldyByZWxlYXNlcyB3aWxsIGJlIGFubm91bmNlZCBvbiBNb2Nrb29uJ3MgW1R3aXR0ZXIgYWNjb3VudCBAR2V0TW9ja29vbl0oaHR0cHM6Ly90d2l0dGVyLmNvbS9HZXRNb2Nrb29uKSBhbmQgdGhyb3VnaCB0aGUgbmV3c2xldHRlciB0byB3aGljaCB5b3UgY2FuIHN1YnNjcmliZSBbaGVyZV0oaHR0cHM6Ly9tb2Nrb29uLmNvbS9uZXdzbGV0dGVyLykuCg== + readmeEtag: '"5338721b71b5dc5e95a80c194ab6e4c5055130e86872e2796a37a82478a31504"' + readmeLastModified: Fri, 12 Jul 2024 09:45:28 GMT repositoryId: 349472277 description: Mockoon's commons library. Used in Mockoon desktop application and CLI. created: '2021-03-19T15:36:31Z' - updated: '2023-05-26T17:09:13Z' + updated: '2024-07-12T09:46:40Z' language: TypeScript archived: true stars: 7 - watchers: 3 + watchers: 4 forks: 11 owner: mockoon logo: https://avatars.githubusercontent.com/u/49429147?v=4 license: MIT - repoEtag: '"3d14861bc55cbcc9eaf898d06ae7b85d14727f2676958fcc8dff51873de036a7"' - repoLastModified: Fri, 26 May 2023 17:09:13 GMT + repoEtag: '"e7d139be9423551efeaa057ec627715cd47a1a7f00c1d681a76bec0def225d1c"' + repoLastModified: Fri, 12 Jul 2024 09:46:40 GMT foundInMaster: true category: Testing id: 3cf2cec48c6ea4aefaa8fc5d0db7b73c @@ -17664,13 +17664,13 @@ id: 48cbff2a15a37b74a0aec052425666f7 repositoryMetadata: base64Readme: >- - PHRhYmxlPgogICAgPHRyPgogICAgICAgIDx0ZD4KICAgICAgICAgICAgPGJyLz48YSBocmVmPSJodHRwczovL2thcmF0ZWxhYnMuaW8iPjxpbWcgc3JjPSJyZXNvdXJjZXMva2FyYXRlLWxvZ28uc3ZnIiBoZWlnaHQ9IjQ1cHgiLz48L2E+CiAgICAgICAgPC90ZD4KICAgICAgICA8dGQ+CiAgICAgICAgICAgIDxoMj48YnIvPlZTIENvZGU8YnIvPkV4dGVuc2lvbjwvaDI+ICAgICAgICAgICAKICAgICAgICA8L3RkPgogICAgICAgIDx0aD4KICAgICAgICAgICAgPGgzPjxhIGhyZWY9Imh0dHBzOi8veW91dHUuYmUvblhVU254Y2RsalE/c2k9d0NoLW0xcUw1UmoxcVFJUyI+OnR2OiA8YnIvPiZuYnNwO1ZpZGVvJm5ic3A7PC9hPjwvaDM+CiAgICAgICAgPC90aD4gICAgICAgIAogICAgICAgIDx0aD4KICAgICAgICAgICAgPGgzPjxhIGhyZWY9Imh0dHBzOi8vd3d3LmthcmF0ZWxhYnMuaW8vcHJpY2luZyI+OmhlYXZ5X2RvbGxhcl9zaWduOiA8YnIvPlByaWNpbmc8L2E+PC9oMz4KICAgICAgICA8L3RoPiAgICAgICAKICAgICAgICA8dGg+CiAgICAgICAgICAgIDxoMz48YSBocmVmPSJodHRwczovL21hcmtldHBsYWNlLnZpc3VhbHN0dWRpby5jb20vaXRlbXM/aXRlbU5hbWU9a2FyYXRlbGFicy5rYXJhdGUiPjxici8+OnphcDogPGJyLz4gTWFya2V0PGJyLz5wbGFjZTwvYT48L2gzPgogICAgICAgIDwvdGg+CiAgICAgICAgPHRoPgogICAgICAgICAgICA8aDM+PGEgaHJlZj0iaHR0cHM6Ly9vcGVuLXZzeC5vcmcvZXh0ZW5zaW9uL2thcmF0ZWxhYnMva2FyYXRlIj48YnIvPjpidWxiOiA8YnIvPiZuYnNwO09wZW4mbmJzcDs8YnIvPlZTWDwvYT48L2gzPgogICAgICAgIDwvdGg+ICAgICAgICAgCiAgICAgICAgPHRoPgogICAgICAgICAgICA8aDM+PGEgaHJlZj0iaHR0cHM6Ly9naXRodWIuY29tL2thcmF0ZWxhYnMvdnNjb2RlLWV4dGVuc2lvbi9pc3N1ZXMiPjpvY3RvY2F0OiA8YnIvPklzc3VlczwvYT48L2gzPgogICAgICAgIDwvdGg+ICAgICAgICAKICAgIDwvdHI+CjwvdGFibGU+Cgo8dGFibGU+CiAgICA8dHI+CiAgICAgICAgPHRoPlBMVVM8L3RoPgogICAgICAgIDx0aD5QUk88L3RoPgogICAgICAgIDx0aD5FbnRlcnByaXNlPC90aD4KICAgIDwvdHI+ICAgIAogICAgPHRyPgogICAgICAgIDx0ZD4gICAgICAgICAgICAKICAgICAgICAgICAgPHVsPgogICAgICAgICAgICAgICAgPGxpPjxhIGhyZWY9Imh0dHBzOi8veW91dHUuYmUvblhVU254Y2RsalE/c2k9ay1NNUFZejluR1p5bHpEOCZ0PTM4Ij5TeW50YXggY29sb3Jpbmc8L2xpPiAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgIDxsaT5SdW4gRmVhdHVyZSBmcm9tIGVkaXRvcjwvbGk+CiAgICAgICAgICAgICAgICA8bGk+PGEgaHJlZj0iI3J1bi1mcm9tLWVkaXRvciI+UnVuIHNpbmdsZSBTY2VuYXJpbyAvIEV4YW1wbGU8L2E+PC9saT4KICAgICAgICAgICAgICAgIDxsaT48YSBocmVmPSJodHRwczovL3lvdXR1LmJlL25YVVNueGNkbGpRP3NpPVAybVZnNDdkTUpBc1FFRTEmdD0xOTIiPkxhdW5jaCBDb25maWd1cmF0aW9uczwvYT48L2xpPgogICAgICAgICAgICAgICAgPGxpPjxhIGhyZWY9Imh0dHBzOi8veW91dHUuYmUvblhVU254Y2RsalE/c2k9VEhROTdTZmhuemt2TFYwdyZ0PTMzMSI+T3V0bGluZSB2aWV3PC9hPjwvbGk+CiAgICAgICAgICAgICAgICA8bGk+PGEgaHJlZj0iaHR0cHM6Ly95b3V0dS5iZS9uWFVTbnhjZGxqUT9zaT1wRDdManRGN2hTNDNRODEzJnQ9MzYzIj5Db2RlIGZvcm1hdHRpbmc8L2E+PC9saT4KICAgICAgICAgICAgICAgIDxsaT48YSBocmVmPSJodHRwczovL3lvdXR1LmJlL25YVVNueGNkbGpRP3NpPWl5Sk1FZEwxOUk1QmtHeGYmdD00MjEiPlRlc3QgUmVzdWx0cyBpbiBJREU8L2E+PC9saT4KICAgICAgICAgICAgPC91bD4KICAgICAgICA8L3RkPgogICAgICAgIDx0ZD4KICAgICAgICAgICAgPGk+Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7KGluY2x1ZGVzIGFsbCBpbiBQTFVTKTwvaT4KICAgICAgICAgICAgPHVsPgogICAgICAgICAgICAgICAgPGxpPjxhIGhyZWY9Imh0dHBzOi8veW91dHUuYmUvSVlTTmpYNWRQWkE/c2k9M3N4SXpZYkpqLTdObFlOUyZ0PTMwIj5BdXRvIGNvbXBsZXRlPC9hPjwvbGk+ICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgPGxpPjxhIGhyZWY9Imh0dHBzOi8veW91dHUuYmUvSVlTTmpYNWRQWkE/c2k9YmpKaUZieVlfYjZuRktKXyZ0PTEwNCI+Q29kZSBmb2xkaW5nPC9hPjwvbGk+CiAgICAgICAgICAgICAgICA8bGk+PGEgaHJlZj0iI3JlZmVyZW5jZXMiPkp1bXAgdG8gcmVmZXJlbmNlczwvYT48L2xpPgogICAgICAgICAgICAgICAgPGxpPjxhIGhyZWY9Imh0dHBzOi8veW91dHUuYmUvSVlTTmpYNWRQWkE/c2k9X2tXellFVnF2RXVYSHNRbyZ0PTEzNCI+SlNPTiByZS1mb3JtYXR0aW5nPC9hPjwvbGk+CiAgICAgICAgICAgICAgICA8bGk+PGEgaHJlZj0iaHR0cHM6Ly95b3V0dS5iZS9JWVNOalg1ZFBaQT9zaT1DZ3JxR0UwLVhWVWFoNExsJnQ9MjMzIj5SdW4gYWxsIHRlc3RzIGluIGZvbGRlcjwvYT48L2xpPgogICAgICAgICAgICAgICAgPGxpPlJ1biBLYXJhdGUgTGFicyBhZGQtb25zIChlLmcuIDxhIGhyZWY9Imh0dHBzOi8vZ2l0aHViLmNvbS9rYXJhdGVsYWJzL2thcmF0ZS1hZGRvbnMvYmxvYi9tYWluL2thcmF0ZS1rYWZrYS9SRUFETUUubWQiPkthZmthPC9hPik8L2xpPgogICAgICAgICAgICAgICAgPGxpPjxhIGhyZWY9Imh0dHBzOi8veW91dHUuYmUvSVlTTmpYNWRQWkE/c2k9cUtZbURydFg0RFp4WEtNWiZ0PTI2MiI+RGVidWcgS2FyYXRlIHRlc3Q8L2E+PC9saT4KICAgICAgICAgICAgICAgIDxsaT5EZWJ1ZyBKYXZhICZhbXA7IEthcmF0ZSBpbiBzYW1lIHNlc3Npb248L2xpPgogICAgICAgICAgICAgICAgPGxpPkphdmEgZGVidWcgc2Vzc2lvbiBzdG9wcyBhdCBLYXJhdGUgYnJlYWtwb2ludHM8L2xpPgogICAgICAgICAgICAgICAgPGxpPmNVUkwgaW1wb3J0ICo8L2xpPgogICAgICAgICAgICAgICAgPGxpPk9wZW5BUEkgc3VwcG9ydCAqPC9saT4KICAgICAgICAgICAgPC91bD48aT4mbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDtbKl0gY29taW5nIHNvb248L2k+CiAgICAgICAgPC90ZD4KICAgICAgICA8dGQ+CiAgICAgICAgICAgIDx1bD4KICAgICAgICAgICAgICAgIDxsaT5Qcmlvcml0eSBzdXBwb3J0PC9saT4KICAgICAgICAgICAgICAgIDxsaT5TU08gLyBTQU1MIHN1cHBvcnQ8L2xpPgogICAgICAgICAgICAgICAgPGxpPjxhIGhyZWY9IiNvZmZsaW5lLWxpY2Vuc2UiPk9mZmxpbmUgbGljZW5zZTwvYT48L2xpPgogICAgICAgICAgICAgICAgPGxpPjxhIGhyZWY9Imh0dHBzOi8vd3d3LmthcmF0ZWxhYnMuaW8vY29udGFjdC11cyI+Q29udGFjdCB1czwvYT48L2xpPgogICAgICAgICAgICA8L3VsPiAgICAgICAgCiAgICAgICAgPC90ZD4gICAgICAgIAogICAgPC90cj4KPC90YWJsZT4KCj4gQnkgdXNpbmcgdGhpcyBwbHVnaW4sIHlvdSBhZ3JlZSB0byB0aGUgS2FyYXRlIExhYnMgW0VVTEFdKGh0dHBzOi8va2FyYXRlbGFicy5pby9ldWxhKS4gRGF0YSBvbiBhIGZldyB1c2VyIGFjdGlvbnMgaXMgY29sbGVjdGVkIGFuZCBzdWJqZWN0IHRvIG91ciBbUHJpdmFjeSBQb2xpY3ldKGh0dHBzOi8va2FyYXRlbGFicy5pby9wcml2YWN5LXBvbGljeSkuIEhUTUwgcmVwb3J0cyBnZW5lcmF0ZWQgYnkgdGhlIEthcmF0ZSBvcGVuLXNvdXJjZSBsaWJyYXJ5IGhhcyBbYWRkaXRpb25hbCBhbmFseXRpY3NdKGh0dHBzOi8vZ2l0aHViLmNvbS9rYXJhdGVsYWJzL2thcmF0ZS9ibG9iL21hc3Rlci9rYXJhdGUtY29yZS9zcmMvdGVzdC9yZXNvdXJjZXMvYW5hbHl0aWNzLm1kKS4KCiMjIExpY2Vuc2UgQWN0aXZhdGlvbgpMaWNlbnNlIGFjdGl2YXRpb24gYW5kIHN0YXR1cyBpcyBhdmFpbGFibGUgdmlhIGEgY29tbWFuZC4gR28gdG8gYFZpZXcgLT4gQ29tbWFuZCBQYWxldHRlYCwgdHlwZSBgS2FyYXRlYCBhbmQgeW91IHNob3VsZCBzZWUgc29tZXRoaW5nIGxpa2UgdGhpcy4KCjxpbWcgc3JjPSJyZXNvdXJjZXMvc2lnbi1pbi5qcGciIGhlaWdodD0iMjAwcHgiLz4KCjxwPiZuYnNwOzwvcD4KCkNob29zZSB0aGUgb3B0aW9uIHRvIGBTaWduIEluIC8gTWFuYWdlIExpY2Vuc2VgIGFuZCB5b3Ugd2lsbCBiZSBzaG93biBhIFtkaWFsb2ddKCNvZmZsaW5lLWxpY2Vuc2UpLiBDbGljayBgU2lnbiBJbmAgdG8gYmUgdGFrZW4gdGhyb3VnaCB0aGUgdXN1YWwgZmxvdyBsaW5rZWQgdG8geW91ciBleGlzdGluZyBzdWJzY3JpcHRpb24gZGV0YWlscy4KCk9uY2UgeW91IGhhdmUgYXV0aGVudGljYXRlZCBzdWNjZXNzZnVsbHksIGNvcHkgdGhlIHNlc3Npb24gSUQgZnJvbSB0aGUgYnJvd3NlciBhbmQgcGFzdGUgaXQgaW50byB0aGUgaW5wdXQtYm94IG5vdyBzaG93aW5nIGluIFZTIENvZGUuIEhpdCBgRU5URVJgIHRvIGNvbXBsZXRlIHRoZSBzaWduLWluLgoKPGltZyBzcmM9InJlc291cmNlcy9zaWduLWluLXNlc3Npb25pZC5qcGciIGhlaWdodD0iMTUwcHgiLz4KCjxwPiZuYnNwOzwvcD4KCk9uY2Ugc2lnbmVkLWluIHlvdSBjYW4gd29yayBvZmZsaW5lLiBZb3UgY2FuIGFsd2F5cyBydW4gdGhlIGBTaWduIEluIC8gTWFuYWdlIExpY2Vuc2VgIGNvbW1hbmQgdG8gc2VlIGhvdyBtYW55IGRheXMgYXJlIGxlZnQgaW4geW91ciBzZXNzaW9uLgoKSWYgeW91IG5lZWQgYW4gW29mZmxpbmUgbGljZW5zZV0oI29mZmxpbmUtbGljZW5zZSkgYmVjYXVzZSBvZiBzdHJpY3Qgc2VjdXJpdHkgb3Igc2ltaWxhciByZXN0cmljdGlvbnMgaW4geW91ciBlbnZpcm9ubWVudCwgcGxlYXNlIFtjb250YWN0IHVzXShodHRwczovL3d3dy5rYXJhdGVsYWJzLmlvL2NvbnRhY3QtdXMpLiBQbGVhc2Ugbm90ZSB0aGF0IHRoaXMgb3B0aW9uIGlzIGF2YWlsYWJsZSBvbmx5IGZvciBlbnRlcnByaXNlIGN1c3RvbWVycyBvZiBLYXJhdGUgTGFicy4KCiMjIFNldHRpbmdzCgpZb3UgY2FuIGFjY2VzcyB0aGUgZXh0ZW5zaW9uIHNldHRpbmdzIGJ5IGNsaWNraW5nIG9uIHRoZSAiZ2VhciIgaWNvbiBhZnRlciBnb2luZyB0byAiRXh0ZW5zaW9ucyIgb24gdGhlIG5hdi1iYXIuCgo8aW1nIHNyYz0icmVzb3VyY2VzL3NldHRpbmdzLW9wZW4uanBnIiBoZWlnaHQ9IjMwMHB4Ii8+Cgo8cD4mbmJzcDs8L3A+CgpFc3BlY2lhbGx5IGlmIHlvdSBhcmUgd29ya2luZyB3aXRoIEphdmEgTWF2ZW4gb3IgR3JhZGxlIHByb2plY3RzLCBpdCBpcyByZWNvbW1lbmRlZCB0aGF0IHlvdSBoYXZlIHRoZSBbTGFuZ3VhZ2UgU3VwcG9ydCBmb3IgSmF2YV0oaHR0cHM6Ly9tYXJrZXRwbGFjZS52aXN1YWxzdHVkaW8uY29tL2l0ZW1zP2l0ZW1OYW1lPXJlZGhhdC5qYXZhKSBWUyBDb2RlIGV4dGVuc2lvbiBpbnN0YWxsZWQuCgpUaGVuIGtlZXAgdGhlIGBrYXJhdGVsYWJzLmthcmF0ZS5ydW4ubW9kZWAgc2V0dGluZyBhcyBgdnNjb2RlLWphdmFgICh0aGUgZGVmYXVsdCkuCgo8aW1nIHNyYz0icmVzb3VyY2VzL3NldHRpbmdzLW5ldy5qcGciIGhlaWdodD0iNjUwcHgiLz4KCiMjIyBTdGFuZGFsb25lCllvdSBjYW4gY2hhbmdlIHRoZSBga2FyYXRlbGFicy5rYXJhdGUucnVuLm1vZGVgIHNldHRpbmcgdG8gYHN0YW5kYWxvbmVgIGlmIHlvdSB3YW50IHRvIHVzZSB0aGUgW0thcmF0ZSBzdGFuZGFsb25lIEpBUl0oaHR0cHM6Ly9naXRodWIuY29tL2thcmF0ZWxhYnMva2FyYXRlL3dpa2kvR2V0LVN0YXJ0ZWQ6LU90aGVyLVJ1bnRpbWUtT3B0aW9ucyNzdGFuZGFsb25lLWphcikuIERvd25sb2FkIGl0IGFuZCBjaG9vc2UgYSBsb2NhbCBmb2xkZXIgdG8ga2VlcCBKQVIgZmlsZXMgaW4uIENoYW5nZSB0aGUgYGthcmF0ZWxhYnMua2FyYXRlLnJ1bi5tb2RlSmFyc2Agc2V0dGluZyB0byBwb2ludCB0byB0aGF0IGZvbGRlciwgYW5kIGZvciBjb252ZW5pZW5jZSwgYWxsIEpBUnMgd2l0aGluIHRoYXQgZm9sZGVyIHdpbGwgYmUgaW5jbHVkZWQgaW4gdGhlIHJ1bnRpbWUgY2xhc3NwYXRoLgoKTm90ZSB0aGF0IHRoZSBgTW9kZSBKYXJzYCBzZXR0aW5nIHNob3VsZCBiZSBhIGZvbGRlciBuYW1lLiBEbyBub3QgaW5jbHVkZSB0aGUgYC5qYXJgIHBhcnQuIE5vdGUgdGhhdCB0aGUgZGVmYXVsdCBvZiBgLmAgd2lsbCB3b3JrIGZpbmUgZm9yIHRoZSBjb21tb24gcGFyY3RpY2Ugb2Yga2VlcGluZyB0aGUgS2FyYXRlIEpBUiBpbiB0aGUgInJvb3QiIG9mIHlvdXIgcHJvamVjdCBmb2xkZXIuCgpUaGUgYGthcmF0ZWxhYnMua2FyYXRlLnJ1bi5jbGFzc3BhdGhQcmVmaXhgIHNldHRpbmcgZGVmYXVsdHMgdG8gYC5gIHdoaWNoIHNob3VsZCBzdWZmaWNlIGZvciBwaWNraW5nIHVwIGBrYXJhdGUtY29uZmlnLmpzYCBmcm9tIHRoZSB3b3Jrc3BhY2Ugcm9vdC4gWW91IGNhbiBhZGQgbW9yZSBjbGFzc3BhdGggZW50cmllcyAoY29tbWEtZGVsaW1pdGVkKSBhbmQgZXZlbiBKQVIgZmlsZXMgaWYgeW91IHdpc2guIEZvciBleGFtcGxlIGAuLHNyYy90ZXN0L2phdmFgIHdvdWxkIGFsc28gc2VhcmNoIGluIGBzcmMvdGVzdC9qYXZhYCBmb3IgYGthcmF0ZS1jb25maWcuanNgLgoKIyMjIEN1c3RvbQoKWW91IGNhbiBhbHNvIG9wdCB0byBydW4gY29tbWFuZHMgc3VjaCBhcyBgamF2YWAgb3IgYG12bmAgZGlyZWN0bHkgd2l0aCBga2FyYXRlbGFicy5rYXJhdGUucnVuLm1vZGVgIHNldCB0byBgY3VzdG9tYC4gSW4gdGhpcyBjYXNlIGBqYXZhYCBvciBgbXZuYCBpcyBleHBlY3RlZCB0byBiZSBpbnN0YWxsZWQgYW5kIGluIHRoZSBzeXN0ZW0gYFBBVEhgLgoKRm9yIGNvbnZlbmllbmNlIHRoZSBzdHJpbmcgYCR7a2FyYXRlQXJnc31gIHdpbGwgYmUgcmVwbGFjZWQgd2l0aCBjb21tYW5kLWxpbmUgYXJndW1lbnRzIGdlbmVyYXRlZCBieSB0aGUgZXh0ZW5zaW9uIHdoZW4gcGVyZm9ybWluZyBhY3Rpb25zIHN1Y2ggYXMgYFJ1bmAgZXRjLgoKIyMgVHJvdWJsZXNob290aW5nCgpJZiB0aGUgW0xhbmd1YWdlIFN1cHBvcnQgZm9yIEphdmFdKGh0dHBzOi8vbWFya2V0cGxhY2UudmlzdWFsc3R1ZGlvLmNvbS9pdGVtcz9pdGVtTmFtZT1yZWRoYXQuamF2YSkgZXh0ZW5zaW9uIGlzIG5vdCBpbnN0YWxsZWQsIHlvdSB3aWxsIG5lZWQgYSBKYXZhIHJ1bnRpbWUgaW5zdGFsbGVkIGFuZCBbYEpBVkFfSE9NRWAgc2V0IGluIHlvdXIgZW52aXJvbm1lbnRdKGh0dHBzOi8vd3d3LmJhZWxkdW5nLmNvbS9qYXZhLWhvbWUtb24td2luZG93cy1tYWMtb3MteC1saW51eCkuIEhhdmluZyB0aGUgYGphdmFgIGNvbW1hbmQgaW4geW91ciBbc3lzdGVtIGBQQVRIYF0oaHR0cHM6Ly93d3cuamF2YS5jb20vZW4vZG93bmxvYWQvaGVscC9wYXRoLmh0bWwpIHNob3VsZCBhbHNvIGJlIHN1ZmZpY2llbnQuIEphdmEgMTEgb3IgaGlnaGVyIGlzIG5lZWRlZCBmb3IgS2FyYXRlIDEuNC5YIGFuZCBKYXZhIDE3IGlzIG5lZWRlZCBmb3IgS2FyYXRlIDEuNS4wIGFuZCBhYm92ZS4KClRoZXJlIGlzIGEgYEthcmF0ZSBMb2dgIHdpdGhpbiB0aGUgIk91dHB1dCIgdGFiIChuZXh0IHRvICJUZXJtaW5hbCIpIHR5cGljYWxseSBhdCB0aGUgYm90dG9tIG9mIHlvdXIgVlMgQ29kZSB3aW5kb3cuIFlvdSBjYW4gbG9vayBhdCBpdCB0byBmaW5kIHRoZSByZWFzb25zIGZvciBmYWlsdXJlLgoKPGltZyBzcmM9InJlc291cmNlcy9rYXJhdGUtbG9nLmpwZyIgaGVpZ2h0PSIyMDBweCIvPgoKPHA+Jm5ic3A7PC9wPgoKVG8gY2hhbmdlIHRoZSBsb2cgbGV2ZWwgeW91IGNhbiB1c2UgdGhlIFZTIENvZGUgQ29tbWFuZCBgRGV2ZWxvcGVyOiBTZXQgTG9nIExldmVsYCAoYFZpZXcgLS0+IENvbW1hbmQgUGFsZXR0ZWAgYW5kIHR5cGUgIkxvZyIpIGFuZCB0aGVuIHNlbGVjdCBgS2FyYXRlIExvZ2AuIENoYW5naW5nIHRoZSBsb2cgbGV2ZWwgdG8gYERlYnVnYCBnaXZlcyB5b3UgbW9yZSBpbmZvcm1hdGlvbi4KCjxpbWcgc3JjPSJyZXNvdXJjZXMvbG9nLWxldmVsLmpwZyIgaGVpZ2h0PSIyMDBweCIvPgoKIyMgUnVuIEZyb20gRWRpdG9yCllvdSBjYW4gcnVuIGEgZmVhdHVyZSBmaWxlIG9wZW4gaW4gdGhlIGVkaXRvciBieSB1c2luZyB0aGUgQ29kZUxlbnMuIFRoZSBrZXlib2FyZCBzaG9ydGN1dCBgW0NUUkxdYCBgW0Y1XWAgYWxzbyB3b3Jrcy4KCjxpbWcgc3JjPSJyZXNvdXJjZXMvcnVuLWZlYXR1cmUuanBnIiBoZWlnaHQ9IjM1MHB4Ii8+Cgo8cD4mbmJzcDs8L3A+CgpZb3UgY2FuIHJ1biBhIHNpbmdsZSBgU2NlbmFyaW9gIGJ5IHVzaW5nIHRoZSBDb2RlTGVucyB0aGF0IGFwcGVhcnMgYWJvdmUgaXQuCgpZb3UgY2FuIGV2ZW4gcnVuIGEgc2luZ2xlICJleGFtcGxlIiBpbiBhIGBTY2VuYXJpbyBPdXRsaW5lYCBieSByaWdodC1jbGlja2luZyBvbiBvbmUgb2YgdGhlIGRhdGEtcm93cyB3aXRoaW4gYW4gYEV4YW1wbGVzYCB0YWJsZS4KCjxpbWcgc3JjPSJyZXNvdXJjZXMvcnVuLWV4YW1wbGUuanBnIiBoZWlnaHQ9IjE4MHB4Ii8+CgojIyBMYXVuY2ggQ29uZmlndXJhdGlvbnMKVlMgQ29kZSBbbGF1bmNoLWNvbmZpZ3VyYXRpb25zXShodHRwczovL2NvZGUudmlzdWFsc3R1ZGlvLmNvbS9kb2NzL2VkaXRvci9kZWJ1Z2dpbmcpIGFyZSB1c2VmdWwgZm9yIGJlaW5nIGFibGUgdG8gcmUtcnVuIHRlc3RzIHdpdGggc3BlY2lmaWMgcGFyYW1ldGVycy4gQWxsIHRoZSB0eXBpY2FsIEthcmF0ZSBvcHRpb25zIHlvdSBuZWVkIGFyZSBzdXBwb3J0ZWQsIGluY2x1ZGluZyBjb250cm9sIG92ZXIgdGhlIEpWTSBwYXJhbWV0ZXJzIGFuZCB3b3JraW5nIGRpcmVjdG9yeS4gVGhlIGZlYXR1cmUgZmlsZSAob3IgcGF0aCB0byBzZWFyY2ggZm9yIGZlYXR1cmUgZmlsZXMpIHNob3VsZCBiZSB0aGUgbGFzdCBhcmd1bWVudC4KCkhlcmUgaXMgYW4gZXhhbXBsZSBgLnZzY29kZS9sYXVuY2guanNvbmAgZmlsZToKCmBgYGpzb24KewogICAgInZlcnNpb24iOiAiMC4yLjAiLAogICAgImNvbmZpZ3VyYXRpb25zIjogWwogICAgICAgIHsKICAgICAgICAgICAgInR5cGUiOiAia2FyYXRlIiwKICAgICAgICAgICAgIm5hbWUiOiAiZW52LXRlc3QiLAogICAgICAgICAgICAicmVxdWVzdCI6ICJsYXVuY2giLAogICAgICAgICAgICAia2FyYXRlQXJncyI6IFsKICAgICAgICAgICAgICAgICItZSIsCiAgICAgICAgICAgICAgICAidGVzdCIsCiAgICAgICAgICAgICAgICAiJHtmaWxlfSIKICAgICAgICAgICAgXQogICAgICAgIH0KICAgIF0KfQpgYGAKClRoZSBhZHZhbnRhZ2UgaXMgdGhhdCB5b3UgY2FuIHNldCB1cCBhbnkgY29tYmluYXRpb24gb2YgW0thcmF0ZSBydW50aW1lIG9wdGlvbnNdKGh0dHBzOi8vZ2l0aHViLmNvbS9rYXJhdGVsYWJzL2thcmF0ZSNrYXJhdGVvcHRpb25zKSB2aWEgYGthcmF0ZUFyZ3NgLiBGb3IgZXhhbXBsZSB5b3UgY2FuOgoqIFtydW4gdGVzdHMgaW4gcGFyYWxsZWxdKGh0dHBzOi8vZ2l0aHViLmNvbS9rYXJhdGVsYWJzL2thcmF0ZS90cmVlL21hc3Rlci9rYXJhdGUtbmV0dHkjcGFyYWxsZWwtZXhlY3V0aW9uKQoqIFtzZXQgdGhlIGVudmlyb25tZW50XShodHRwczovL2dpdGh1Yi5jb20va2FyYXRlbGFicy9rYXJhdGUvdHJlZS9tYXN0ZXIva2FyYXRlLW5ldHR5I2thcmF0ZWVudikKKiBvciBbY2hvb3NlIHRhZ3NdKGh0dHBzOi8vZ2l0aHViLmNvbS9rYXJhdGVsYWJzL2thcmF0ZS90cmVlL21hc3Rlci9rYXJhdGUtbmV0dHkjdGFncykgdG8gaW5jbHVkZSBvciBleGNsdWRlLgoKTm93IHlvdSBjYW4gcnVuIHRlc3RzIGZyb20gdGhlIFtSdW4gYW5kIERlYnVnXShodHRwczovL2NvZGUudmlzdWFsc3R1ZGlvLmNvbS9kb2NzL2VkaXRvci9kZWJ1Z2dpbmcjX2xhdW5jaC1jb25maWd1cmF0aW9ucykgdmlldyBpbiBWUyBDb2RlIGFuZCBrZXlib2FyZCBzaG9ydC1jdXRzIHN1Y2ggYXMgYEY1YCB3aWxsIHdvcmsgZm9yIHRoZSBjdXJyZW50bHkgZm9jdXNlZCBmaWxlIGluIHRoZSBlZGl0b3IuIE5vdGUgdGhhdCB5b3UgY2FuIGV2ZW4gUnVuIHdpdGhvdXQgRGVidWdnaW5nOiBgQ3RybCArIEY1YC4KCjxpbWcgc3JjPSJyZXNvdXJjZXMvbGF1bmNoLWNvbmZpZy5qcGciIGhlaWdodD0iNDAwcHgiLz4KCjxwPiZuYnNwOzwvcD4KCllvdSBjYW4gaGF2ZSBtdWx0aXBsZSBjb25maWd1cmF0aW9ucyBhbmQgZWFzaWx5IHN3aXRjaCBiZXR3ZWVuIHRoZW0uCgpZb3UgY2FuIGFkZCBgIm5vRGVidWciOiB0cnVlYCB0byB0aGUgcnVuLWNvbmZpZ3VyYXRpb24gSlNPTiB0byBmb3JjZSAiUnVuIHdpdGhvdXQgRGVidWdnaW5nIiBmb3IgY29udmVuaWVuY2UuCgpJbnN0ZWFkIG9mIGAke2ZpbGV9YCBhcyB0aGUgdmFsdWUgZm9yIGBmZWF0dXJlYCwgeW91IGNhbiB1c2UgYW55IHZhbGlkIGZvbGRlciBwYXRoIG9yIGV2ZW4gbXVsdGlwbGUgZmVhdHVyZSBmaWxlcy4KCiMjIE91dGxpbmUgVmlldwpUaGUgVlMgQ29kZSBbb3V0bGluZSB2aWV3XShodHRwczovL2NvZGUudmlzdWFsc3R1ZGlvLmNvbS9kb2NzL2dldHN0YXJ0ZWQvdXNlcmludGVyZmFjZSNfb3V0bGluZS12aWV3KSBpcyBzdXBwb3J0ZWQgc28geW91IGNhbiBuYXZpZ2F0ZSBsYXJnZSBmaWxlcyB3aXRoIGVhc2UuCgo8aW1nIHNyYz0icmVzb3VyY2VzL291dGxpbmUtdmlldy5qcGciIGhlaWdodD0iNDAwcHgiLz4KCiMjIENvZGUgRm9ybWF0dGluZwpWUyBDb2RlIFtjb2RlLWZvcm1hdHRpbmddKGh0dHBzOi8vY29kZS52aXN1YWxzdHVkaW8uY29tL2RvY3MvZWRpdG9yL2NvZGViYXNpY3MjX2Zvcm1hdHRpbmcpIHNob3J0Y3V0cyB3b3JrIHRvIGZvcm1hdCBpbmRlbnRpbmcgb2YgZmVhdHVyZSBmaWxlIGVsZW1lbnRzLgoKIyMgVGVzdCBSZXN1bHRzClRoZSBIVE1MIHJlcG9ydCBpcyBvbmUtY2xpY2sgYXdheS4KCjxpbWcgc3JjPSJyZXNvdXJjZXMvdGVzdC1yZXBvcnQtbGluay5qcGciIGhlaWdodD0iMjAwcHgiLz4KCiMjIEF1dG8gQ29tcGxldGUKQmVzaWRlcyB0aGUgc3ludGF4IHZhbGlkYXRpb24sIHlvdSBoYXZlIGF1dG8tY29tcGxldGUgZm9yIHRoZSBtb3N0IGNvbW1vbmx5IHVzZWQga2V5d29yZHMuCgo8aW1nIHNyYz0icmVzb3VyY2VzL2F1dG9jb21wbGV0ZS5qcGciIGhlaWdodD0iMjAwcHgiLz4KCiMjIENvZGUgRm9sZGluZwpZb3UgY2FuIGNvbGxhcHNlIHNlY3Rpb25zIHRvIG1ha2UgaXQgZWFzaWVyIHRvIGRlYWwgd2l0aCBsb25nIHRlc3RzLgoKPGltZyBzcmM9InJlc291cmNlcy9jb2RlLWZvbGRpbmcuanBnIiBoZWlnaHQ9IjIwMHB4Ii8+CgojIyBSZWZlcmVuY2VzCkNvbWluZyBTb29uLgoKIyMgSlNPTiBSZS1mb3JtYXR0aW5nClBsYWNlIHRoZSBjdXJzb3Igd2l0aGluIEpTT04gdG8gc2VlIG9wdGlvbnMgdG8gcmUtZm9ybWF0IGl0LCB5b3Ugd2lsbCBzZWUgYSAiYnVsYiIgaWNvbi4KCjxpbWcgc3JjPSJyZXNvdXJjZXMvanNvbi1idWxiLmpwZyIgaGVpZ2h0PSIyNTBweCIvPgoKPHA+Jm5ic3A7PC9wPgoKVGhlIGZvbGxvd2luZyBvcHRpb25zIGFyZSBwb3NzaWJsZSAoZGVwZW5kaW5nIG9uIGNvbnRleHQpOgoKKiBMZW5pZW50IC0ganVzdCBsaWtlIEpTLCB3aGVyZSBzaW5nbGUtcXVvdGVzIGFyZSB1c2VkIGFuZCBubyBxdW90ZXMgYXJlIG5lZWRlZCBmb3IgcHJvcGVydHkga2V5cwoqIFN0cmljdCAtIFN0cmljdCBKU09OLCB1c2luZyBkb3VibGUtcXVvdGVzCiogTWFrZSBzaW5nbGUgTGluZSAtIGNvbnZlcnQgbXVsdGktbGluZSBKU09OIHRvIGEgc2luZ2xlIGxpbmUKKiBNYWtlIG11bHRpLWxpbmUgLSBjb252ZXJ0IGEgc2luZ2xlIGxpbmUgb2YgSlNPTiB0byBtdWx0aS1saW5lLCBpbmNsdWRpbmcgdHJpcGxlLXF1b3RlcwoKIyMgUnVuIEZvbGRlcgoKQXMgYSBjb252ZW5pZW5jZSwgeW91IGNhbiByaWdodC1jbGljayBhbmQgcnVuIGEgZm9sZGVyIGZyb20gdGhlIGV4cGxvcmVyIHZpZXcuCgo8aW1nIHNyYz0icmVzb3VyY2VzL3J1bi1mb2xkZXIuanBnIiBoZWlnaHQ9IjQ1MHB4Ii8+CgojIyBEZWJ1ZwoKWW91IGNhbiBzZXQgYnJlYWstcG9pbnRzIG9uIEthcmF0ZSBmZWF0dXJlIGZpbGVzIGluIGRlYnVnIG1vZGUuIFRoZSBLYXJhdGUgZGVidWdnZXIgY2FuIGV2ZW4gc3RlcC1iYWNrIGFuZCBob3QtcmVsb2FkIHNpbXBsZSBlZGl0cyB0byB5b3VyIHRlc3QuCgo8aW1nIHNyYz0icmVzb3VyY2VzL2RlYnVnLmpwZyIgaGVpZ2h0PSI2MDBweCIvPgoKIyMjIERlYnVnIEphdmEgZnJvbSBLYXJhdGUKCkEgS2FyYXRlIGRlYnVnIHNlc3Npb24gd2lsbCBldmVuIHN0b3AgYXQgSmF2YSBicmVha3BvaW50cy4KCiMjIyBEZWJ1ZyBLYXJhdGUgZnJvbSBKYXZhCgpZb3UgY2FuIGFsc28gc3RhcnQgYSBub3JtYWwgSmF2YSBkZWJ1ZyBzZXNzaW9uIHRoYXQgdXNlcyB0aGUgS2FyYXRlIGBSdW5uZXJgIEphdmEgQVBJIGJ1dCBzdGlsbCBzdG9wIGF0IEthcmF0ZSBicmVha3BvaW50cy4gVGhpcyByZXF1aXJlcyB5b3UgdG8gYmUgdXNpbmcgS2FyYXRlIHZlcnNpb24gMS41LjAuUkMzIG9yIGdyZWF0ZXIuCgojIyBPZmZsaW5lIExpY2Vuc2UKCj4gWyFJTVBPUlRBTlRdICAKPiBUaGUgT2ZmbGluZSBMaWNlbnNlIGlzIGEgW3BhaWQgZmVhdHVyZSBmb3IgZW50ZXJwcmlzZXNdKGh0dHBzOi8vd3d3LmthcmF0ZWxhYnMuaW8vcHJpY2luZykuIFBsZWFzZSBtYWtlIHN1cmUgeW91IGtub3cgd2hvIHlvdXIgZGVzaWduYXRlZCBhZG1pbiBpcyBiZWZvcmUgeW91IHBlcmZvcm0gdGhpcyBzdGVwLgoKClRoZSBkaWFsb2cgeW91IHNlZSB3aGVuIHlvdSBpbnZva2UgdGhlIFtgU2lnbiBJbiAvIE1hbmFnZSBMaWNlbnNlYF0oI2xpY2Vuc2UtYWN0aXZhdGlvbikgY29tbWFuZCBsb29rcyBsaWtlIHRoaXMuCgo8aW1nIHNyYz0icmVzb3VyY2VzL2xpY2Vuc2UtZGlhbG9nLmpwZyIgaGVpZ2h0PSIxMDBweCIvPgoKPHA+Jm5ic3A7PC9wPgoKQ2xpY2sgdGhlIGBPZmZsaW5lIExpY2Vuc2VgIGJ1dHRvbi4gQSB1bmlxdWUgY29kZSBmb3IgeW91ciBzeXN0ZW0gd2lsbCBiZSBzaG93biB3aGljaCB5b3UgY2FuIGN1dCBhbmQgcGFzdGUuIEluIHRoZSBleGFtcGxlIGJlbG93LCBpdCBpczogYERoSE9GS0h2ZDdYWVRpK3JRbk5USlE9PWAKCjxpbWcgc3JjPSJyZXNvdXJjZXMvb2ZmbGluZS1saWNlbnNlLWNvZGUuanBnIiBoZWlnaHQ9IjE1MHB4Ii8+Cgo8cD4mbmJzcDs8L3A+CgpTZW5kIHRoYXQgdW5pcXVlIGNvZGUgdG8geW91ciBkZXNpZ25hdGVkIGFkbWluLiBZb3Ugd2lsbCBiZSBpc3N1ZWQgYSBsaWNlbnNlIHRoYXQgaXMgdGllZCB0byB0aGlzIHVuaXF1ZSBjb2RlLiBUbyBhcHBseSB0aGUgbGljZW5zZSwgY29weSAqYWxsKiB0aGUgdGV4dCBmcm9tIHRoZSBsaWNlbnNlIGZpbGUgKHdoaWNoIHNob3VsZCBzdGFydCB3aXRoOiBgLS0tLS1CRUdJTiBMSUNFTlNFIEZJTEUtLS0tLWApIGFuZCBwYXN0ZSBpdCBpbnRvIHRoZSB0ZXh0LWZpZWxkIHNob3duIGFib3ZlLiBNYWtlIHN1cmUgeW91ICpjbGVhciogdGhlIHRleHQtYm94IGJlZm9yZSBwYXN0aW5nIHRoZSBsaWNlbnNlIGZpbGUgdGV4dCBvciBqdXN0IHJlcGxhY2UgdGhlIGluaXRpYWwgY29udGVudHMuIE5vdyB5b3Ugc2hvdWxkIHNlZSBzb21ldGhpbmcgbGlrZSB0aGlzLgoKPGltZyBzcmM9InJlc291cmNlcy9vZmZsaW5lLWxpY2Vuc2UtcGFzdGUuanBnIiBoZWlnaHQ9IjE1MHB4Ii8+Cgo8cD4mbmJzcDs8L3A+CgpDbGljayBbRU5URVJdIGFuZCBzaG91bGQgc2VlIGEgY29uZmlybWF0aW9uIG1lc3NhZ2Ugd2l0aCB5b3VyIGxpY2Vuc2UgZGV0YWlscy4KCgoKCgo= - readmeEtag: '"cdba163ac8eba2fbad2c7e899a5c87481d7b712f8aa7b4499ba91d2202905584"' - readmeLastModified: Wed, 03 Jul 2024 05:46:07 GMT + PHRhYmxlPgogICAgPHRyPgogICAgICAgIDx0ZD4KICAgICAgICAgICAgPGJyLz48YSBocmVmPSJodHRwczovL2thcmF0ZWxhYnMuaW8iPjxpbWcgc3JjPSJyZXNvdXJjZXMva2FyYXRlLWxvZ28uc3ZnIiBoZWlnaHQ9IjQ1cHgiLz48L2E+CiAgICAgICAgPC90ZD4KICAgICAgICA8dGQ+CiAgICAgICAgICAgIDxoMj48YnIvPlZTIENvZGU8YnIvPkV4dGVuc2lvbjwvaDI+ICAgICAgICAgICAKICAgICAgICA8L3RkPgogICAgICAgIDx0aD4KICAgICAgICAgICAgPGgzPjxhIGhyZWY9Imh0dHBzOi8veW91dHUuYmUvblhVU254Y2RsalE/c2k9d0NoLW0xcUw1UmoxcVFJUyI+OnR2OiA8YnIvPiZuYnNwO1ZpZGVvJm5ic3A7PC9hPjwvaDM+CiAgICAgICAgPC90aD4gICAgICAgIAogICAgICAgIDx0aD4KICAgICAgICAgICAgPGgzPjxhIGhyZWY9Imh0dHBzOi8vd3d3LmthcmF0ZWxhYnMuaW8vcHJpY2luZyI+OmhlYXZ5X2RvbGxhcl9zaWduOiA8YnIvPlByaWNpbmc8L2E+PC9oMz4KICAgICAgICA8L3RoPiAgICAgICAKICAgICAgICA8dGg+CiAgICAgICAgICAgIDxoMz48YSBocmVmPSJodHRwczovL21hcmtldHBsYWNlLnZpc3VhbHN0dWRpby5jb20vaXRlbXM/aXRlbU5hbWU9a2FyYXRlbGFicy5rYXJhdGUiPjxici8+OnphcDogPGJyLz4gTWFya2V0PGJyLz5wbGFjZTwvYT48L2gzPgogICAgICAgIDwvdGg+CiAgICAgICAgPHRoPgogICAgICAgICAgICA8aDM+PGEgaHJlZj0iaHR0cHM6Ly9vcGVuLXZzeC5vcmcvZXh0ZW5zaW9uL2thcmF0ZWxhYnMva2FyYXRlIj48YnIvPjpidWxiOiA8YnIvPiZuYnNwO09wZW4mbmJzcDs8YnIvPlZTWDwvYT48L2gzPgogICAgICAgIDwvdGg+ICAgICAgICAgCiAgICAgICAgPHRoPgogICAgICAgICAgICA8aDM+PGEgaHJlZj0iaHR0cHM6Ly9naXRodWIuY29tL2thcmF0ZWxhYnMvdnNjb2RlLWV4dGVuc2lvbi9pc3N1ZXMiPjpvY3RvY2F0OiA8YnIvPklzc3VlczwvYT48L2gzPgogICAgICAgIDwvdGg+ICAgICAgICAKICAgIDwvdHI+CjwvdGFibGU+Cgo8dGFibGU+CiAgICA8dHI+CiAgICAgICAgPHRoPlBMVVM8L3RoPgogICAgICAgIDx0aD5QUk88L3RoPgogICAgICAgIDx0aD5FbnRlcnByaXNlPC90aD4KICAgIDwvdHI+ICAgIAogICAgPHRyPgogICAgICAgIDx0ZD4gICAgICAgICAgICAKICAgICAgICAgICAgPHVsPgogICAgICAgICAgICAgICAgPGxpPjxhIGhyZWY9Imh0dHBzOi8veW91dHUuYmUvblhVU254Y2RsalE/c2k9ay1NNUFZejluR1p5bHpEOCZ0PTM4Ij5TeW50YXggY29sb3Jpbmc8L2xpPiAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgIDxsaT5SdW4gRmVhdHVyZSBmcm9tIGVkaXRvcjwvbGk+CiAgICAgICAgICAgICAgICA8bGk+PGEgaHJlZj0iI3J1bi1mcm9tLWVkaXRvciI+UnVuIHNpbmdsZSBTY2VuYXJpbyAvIEV4YW1wbGU8L2E+PC9saT4KICAgICAgICAgICAgICAgIDxsaT48YSBocmVmPSJodHRwczovL3lvdXR1LmJlL25YVVNueGNkbGpRP3NpPVAybVZnNDdkTUpBc1FFRTEmdD0xOTIiPkxhdW5jaCBDb25maWd1cmF0aW9uczwvYT48L2xpPgogICAgICAgICAgICAgICAgPGxpPjxhIGhyZWY9Imh0dHBzOi8veW91dHUuYmUvblhVU254Y2RsalE/c2k9VEhROTdTZmhuemt2TFYwdyZ0PTMzMSI+T3V0bGluZSB2aWV3PC9hPjwvbGk+CiAgICAgICAgICAgICAgICA8bGk+PGEgaHJlZj0iaHR0cHM6Ly95b3V0dS5iZS9uWFVTbnhjZGxqUT9zaT1wRDdManRGN2hTNDNRODEzJnQ9MzYzIj5Db2RlIGZvcm1hdHRpbmc8L2E+PC9saT4KICAgICAgICAgICAgICAgIDxsaT48YSBocmVmPSJodHRwczovL3lvdXR1LmJlL25YVVNueGNkbGpRP3NpPWl5Sk1FZEwxOUk1QmtHeGYmdD00MjEiPlRlc3QgUmVzdWx0cyBpbiBJREU8L2E+PC9saT4KICAgICAgICAgICAgPC91bD4KICAgICAgICA8L3RkPgogICAgICAgIDx0ZD4KICAgICAgICAgICAgPGk+Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7KGluY2x1ZGVzIGFsbCBpbiBQTFVTKTwvaT4KICAgICAgICAgICAgPHVsPgogICAgICAgICAgICAgICAgPGxpPjxhIGhyZWY9Imh0dHBzOi8veW91dHUuYmUvSVlTTmpYNWRQWkE/c2k9M3N4SXpZYkpqLTdObFlOUyZ0PTMwIj5BdXRvIGNvbXBsZXRlPC9hPjwvbGk+ICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgPGxpPjxhIGhyZWY9Imh0dHBzOi8veW91dHUuYmUvSVlTTmpYNWRQWkE/c2k9YmpKaUZieVlfYjZuRktKXyZ0PTEwNCI+Q29kZSBmb2xkaW5nPC9hPjwvbGk+CiAgICAgICAgICAgICAgICA8bGk+PGEgaHJlZj0iI3JlZmVyZW5jZXMiPkp1bXAgdG8gcmVmZXJlbmNlczwvYT48L2xpPgogICAgICAgICAgICAgICAgPGxpPjxhIGhyZWY9Imh0dHBzOi8veW91dHUuYmUvSVlTTmpYNWRQWkE/c2k9X2tXellFVnF2RXVYSHNRbyZ0PTEzNCI+SlNPTiByZS1mb3JtYXR0aW5nPC9hPjwvbGk+CiAgICAgICAgICAgICAgICA8bGk+PGEgaHJlZj0iaHR0cHM6Ly95b3V0dS5iZS9JWVNOalg1ZFBaQT9zaT1DZ3JxR0UwLVhWVWFoNExsJnQ9MjMzIj5SdW4gYWxsIHRlc3RzIGluIGZvbGRlcjwvYT48L2xpPgogICAgICAgICAgICAgICAgPGxpPlJ1biBLYXJhdGUgTGFicyBhZGQtb25zIChlLmcuIDxhIGhyZWY9Imh0dHBzOi8vZ2l0aHViLmNvbS9rYXJhdGVsYWJzL2thcmF0ZS1hZGRvbnMvYmxvYi9tYWluL2thcmF0ZS1rYWZrYS9SRUFETUUubWQiPkthZmthPC9hPik8L2xpPgogICAgICAgICAgICAgICAgPGxpPjxhIGhyZWY9Imh0dHBzOi8veW91dHUuYmUvSVlTTmpYNWRQWkE/c2k9cUtZbURydFg0RFp4WEtNWiZ0PTI2MiI+RGVidWcgS2FyYXRlIHRlc3Q8L2E+PC9saT4KICAgICAgICAgICAgICAgIDxsaT5EZWJ1ZyBKYXZhICZhbXA7IEthcmF0ZSBpbiBzYW1lIHNlc3Npb248L2xpPgogICAgICAgICAgICAgICAgPGxpPkphdmEgZGVidWcgc2Vzc2lvbiBzdG9wcyBhdCBLYXJhdGUgYnJlYWtwb2ludHM8L2xpPgogICAgICAgICAgICAgICAgPGxpPmNVUkwgaW1wb3J0ICo8L2xpPgogICAgICAgICAgICAgICAgPGxpPk9wZW5BUEkgc3VwcG9ydCAqPC9saT4KICAgICAgICAgICAgPC91bD48aT4mbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDtbKl0gY29taW5nIHNvb248L2k+CiAgICAgICAgPC90ZD4KICAgICAgICA8dGQ+CiAgICAgICAgICAgIDx1bD4KICAgICAgICAgICAgICAgIDxsaT5Qcmlvcml0eSBzdXBwb3J0PC9saT4KICAgICAgICAgICAgICAgIDxsaT5TU08gLyBTQU1MIHN1cHBvcnQ8L2xpPgogICAgICAgICAgICAgICAgPGxpPjxhIGhyZWY9IiNvZmZsaW5lLWxpY2Vuc2UiPk9mZmxpbmUgbGljZW5zZTwvYT48L2xpPgogICAgICAgICAgICAgICAgPGxpPjxhIGhyZWY9Imh0dHBzOi8vd3d3LmthcmF0ZWxhYnMuaW8vY29udGFjdC11cyI+Q29udGFjdCB1czwvYT48L2xpPgogICAgICAgICAgICA8L3VsPiAgICAgICAgCiAgICAgICAgPC90ZD4gICAgICAgIAogICAgPC90cj4KPC90YWJsZT4KCj4gQnkgdXNpbmcgdGhpcyBwbHVnaW4sIHlvdSBhZ3JlZSB0byB0aGUgS2FyYXRlIExhYnMgW0VVTEFdKGh0dHBzOi8va2FyYXRlbGFicy5pby9ldWxhKS4gRGF0YSBvbiBhIGZldyB1c2VyIGFjdGlvbnMgaXMgY29sbGVjdGVkIGFuZCBzdWJqZWN0IHRvIG91ciBbUHJpdmFjeSBQb2xpY3ldKGh0dHBzOi8va2FyYXRlbGFicy5pby9wcml2YWN5LXBvbGljeSkuIEhUTUwgcmVwb3J0cyBnZW5lcmF0ZWQgYnkgdGhlIEthcmF0ZSBvcGVuLXNvdXJjZSBsaWJyYXJ5IGhhcyBbYWRkaXRpb25hbCBhbmFseXRpY3NdKGh0dHBzOi8vZ2l0aHViLmNvbS9rYXJhdGVsYWJzL2thcmF0ZS9ibG9iL21hc3Rlci9rYXJhdGUtY29yZS9zcmMvdGVzdC9yZXNvdXJjZXMvYW5hbHl0aWNzLm1kKS4KCiMjIExpY2Vuc2UgQWN0aXZhdGlvbgpMaWNlbnNlIGFjdGl2YXRpb24gYW5kIHN0YXR1cyBpcyBhdmFpbGFibGUgdmlhIGEgY29tbWFuZC4gR28gdG8gYFZpZXcgLT4gQ29tbWFuZCBQYWxldHRlYCwgdHlwZSBgS2FyYXRlYCBhbmQgeW91IHNob3VsZCBzZWUgc29tZXRoaW5nIGxpa2UgdGhpcy4KCjxpbWcgc3JjPSJyZXNvdXJjZXMvc2lnbi1pbi5qcGciIGhlaWdodD0iMjAwcHgiLz4KCjxwPiZuYnNwOzwvcD4KCkNob29zZSB0aGUgb3B0aW9uIHRvIGBTaWduIEluIC8gTWFuYWdlIExpY2Vuc2VgIGFuZCB5b3Ugd2lsbCBiZSBzaG93biBhIFtkaWFsb2ddKCNvZmZsaW5lLWxpY2Vuc2UpLiBDbGljayBgU2lnbiBJbmAgdG8gYmUgdGFrZW4gdGhyb3VnaCB0aGUgdXN1YWwgZmxvdyBsaW5rZWQgdG8geW91ciBleGlzdGluZyBzdWJzY3JpcHRpb24gZGV0YWlscy4KCk9uY2UgeW91IGhhdmUgYXV0aGVudGljYXRlZCBzdWNjZXNzZnVsbHksIGNvcHkgdGhlIHNlc3Npb24gSUQgZnJvbSB0aGUgYnJvd3NlciBhbmQgcGFzdGUgaXQgaW50byB0aGUgaW5wdXQtYm94IG5vdyBzaG93aW5nIGluIFZTIENvZGUuIEhpdCBgRU5URVJgIHRvIGNvbXBsZXRlIHRoZSBzaWduLWluLgoKPGltZyBzcmM9InJlc291cmNlcy9zaWduLWluLXNlc3Npb25pZC5qcGciIGhlaWdodD0iMTUwcHgiLz4KCjxwPiZuYnNwOzwvcD4KCk9uY2Ugc2lnbmVkLWluIHlvdSBjYW4gd29yayBvZmZsaW5lLiBZb3UgY2FuIGFsd2F5cyBydW4gdGhlIGBTaWduIEluIC8gTWFuYWdlIExpY2Vuc2VgIGNvbW1hbmQgdG8gc2VlIGhvdyBtYW55IGRheXMgYXJlIGxlZnQgaW4geW91ciBzZXNzaW9uLgoKSWYgeW91IG5lZWQgYW4gW29mZmxpbmUgbGljZW5zZV0oI29mZmxpbmUtbGljZW5zZSkgYmVjYXVzZSBvZiBzdHJpY3Qgc2VjdXJpdHkgb3Igc2ltaWxhciByZXN0cmljdGlvbnMgaW4geW91ciBlbnZpcm9ubWVudCwgcGxlYXNlIFtjb250YWN0IHVzXShodHRwczovL3d3dy5rYXJhdGVsYWJzLmlvL2NvbnRhY3QtdXMpLiBQbGVhc2Ugbm90ZSB0aGF0IHRoaXMgb3B0aW9uIGlzIGF2YWlsYWJsZSBvbmx5IGZvciBlbnRlcnByaXNlIGN1c3RvbWVycyBvZiBLYXJhdGUgTGFicy4KCiMjIFNldHRpbmdzCgpZb3UgY2FuIGFjY2VzcyB0aGUgZXh0ZW5zaW9uIHNldHRpbmdzIGJ5IGNsaWNraW5nIG9uIHRoZSAiZ2VhciIgaWNvbiBhZnRlciBnb2luZyB0byAiRXh0ZW5zaW9ucyIgb24gdGhlIG5hdi1iYXIuCgo8aW1nIHNyYz0icmVzb3VyY2VzL3NldHRpbmdzLW9wZW4uanBnIiBoZWlnaHQ9IjMwMHB4Ii8+Cgo8cD4mbmJzcDs8L3A+CgpFc3BlY2lhbGx5IGlmIHlvdSBhcmUgd29ya2luZyB3aXRoIEphdmEgTWF2ZW4gb3IgR3JhZGxlIHByb2plY3RzLCBpdCBpcyByZWNvbW1lbmRlZCB0aGF0IHlvdSBoYXZlIHRoZSBbTGFuZ3VhZ2UgU3VwcG9ydCBmb3IgSmF2YV0oaHR0cHM6Ly9tYXJrZXRwbGFjZS52aXN1YWxzdHVkaW8uY29tL2l0ZW1zP2l0ZW1OYW1lPXJlZGhhdC5qYXZhKSBWUyBDb2RlIGV4dGVuc2lvbiBpbnN0YWxsZWQuCgpUaGVuIGtlZXAgdGhlIGBrYXJhdGVsYWJzLmthcmF0ZS5ydW4ubW9kZWAgc2V0dGluZyBhcyBgdnNjb2RlLWphdmFgICh0aGUgZGVmYXVsdCkuCgo8aW1nIHNyYz0icmVzb3VyY2VzL3NldHRpbmdzLW5ldy5qcGciIGhlaWdodD0iNjUwcHgiLz4KCiMjIyBTdGFuZGFsb25lCllvdSBjYW4gY2hhbmdlIHRoZSBga2FyYXRlbGFicy5rYXJhdGUucnVuLm1vZGVgIHNldHRpbmcgdG8gYHN0YW5kYWxvbmVgIGlmIHlvdSB3YW50IHRvIHVzZSB0aGUgW0thcmF0ZSBzdGFuZGFsb25lIEpBUl0oaHR0cHM6Ly9naXRodWIuY29tL2thcmF0ZWxhYnMva2FyYXRlL3dpa2kvR2V0LVN0YXJ0ZWQ6LU90aGVyLVJ1bnRpbWUtT3B0aW9ucyNzdGFuZGFsb25lLWphcikuIERvd25sb2FkIGl0IGFuZCBjaG9vc2UgYSBsb2NhbCBmb2xkZXIgdG8ga2VlcCBKQVIgZmlsZXMgaW4uIENoYW5nZSB0aGUgYGthcmF0ZWxhYnMua2FyYXRlLnJ1bi5tb2RlSmFyc2Agc2V0dGluZyB0byBwb2ludCB0byB0aGF0IGZvbGRlciwgYW5kIGZvciBjb252ZW5pZW5jZSwgYWxsIEpBUnMgd2l0aGluIHRoYXQgZm9sZGVyIHdpbGwgYmUgaW5jbHVkZWQgaW4gdGhlIHJ1bnRpbWUgY2xhc3NwYXRoLgoKTm90ZSB0aGF0IHRoZSBgTW9kZSBKYXJzYCBzZXR0aW5nIHNob3VsZCBiZSBhIGZvbGRlciBuYW1lLiBEbyBub3QgaW5jbHVkZSB0aGUgYC5qYXJgIHBhcnQuIE5vdGUgdGhhdCB0aGUgZGVmYXVsdCBvZiBgLmAgd2lsbCB3b3JrIGZpbmUgZm9yIHRoZSBjb21tb24gcHJhY3RpY2Ugb2Yga2VlcGluZyB0aGUgS2FyYXRlIEpBUiBpbiB0aGUgInJvb3QiIG9mIHlvdXIgcHJvamVjdCBmb2xkZXIuCgpUaGUgYGthcmF0ZWxhYnMua2FyYXRlLnJ1bi5jbGFzc3BhdGhQcmVmaXhgIHNldHRpbmcgZGVmYXVsdHMgdG8gYC5gIHdoaWNoIHNob3VsZCBzdWZmaWNlIGZvciBwaWNraW5nIHVwIGBrYXJhdGUtY29uZmlnLmpzYCBmcm9tIHRoZSB3b3Jrc3BhY2Ugcm9vdC4gWW91IGNhbiBhZGQgbW9yZSBjbGFzc3BhdGggZW50cmllcyAoY29tbWEtZGVsaW1pdGVkKSBhbmQgZXZlbiBKQVIgZmlsZXMgaWYgeW91IHdpc2guIEZvciBleGFtcGxlIGAuLHNyYy90ZXN0L2phdmFgIHdvdWxkIGFsc28gc2VhcmNoIGluIGBzcmMvdGVzdC9qYXZhYCBmb3IgYGthcmF0ZS1jb25maWcuanNgLgoKIyMjIEN1c3RvbQoKWW91IGNhbiBhbHNvIG9wdCB0byBydW4gY29tbWFuZHMgc3VjaCBhcyBgamF2YWAgb3IgYG12bmAgZGlyZWN0bHkgd2l0aCBga2FyYXRlbGFicy5rYXJhdGUucnVuLm1vZGVgIHNldCB0byBgY3VzdG9tYC4gSW4gdGhpcyBjYXNlIGBqYXZhYCBvciBgbXZuYCBpcyBleHBlY3RlZCB0byBiZSBpbnN0YWxsZWQgYW5kIGluIHRoZSBzeXN0ZW0gYFBBVEhgLgoKRm9yIGNvbnZlbmllbmNlIHRoZSBzdHJpbmcgYCR7a2FyYXRlQXJnc31gIHdpbGwgYmUgcmVwbGFjZWQgd2l0aCBjb21tYW5kLWxpbmUgYXJndW1lbnRzIGdlbmVyYXRlZCBieSB0aGUgZXh0ZW5zaW9uIHdoZW4gcGVyZm9ybWluZyBhY3Rpb25zIHN1Y2ggYXMgYFJ1bmAgZXRjLgoKIyMgVHJvdWJsZXNob290aW5nCgpJZiB0aGUgW0xhbmd1YWdlIFN1cHBvcnQgZm9yIEphdmFdKGh0dHBzOi8vbWFya2V0cGxhY2UudmlzdWFsc3R1ZGlvLmNvbS9pdGVtcz9pdGVtTmFtZT1yZWRoYXQuamF2YSkgZXh0ZW5zaW9uIGlzIG5vdCBpbnN0YWxsZWQsIHlvdSB3aWxsIG5lZWQgYSBKYXZhIHJ1bnRpbWUgaW5zdGFsbGVkIGFuZCBbYEpBVkFfSE9NRWAgc2V0IGluIHlvdXIgZW52aXJvbm1lbnRdKGh0dHBzOi8vd3d3LmJhZWxkdW5nLmNvbS9qYXZhLWhvbWUtb24td2luZG93cy1tYWMtb3MteC1saW51eCkuIEhhdmluZyB0aGUgYGphdmFgIGNvbW1hbmQgaW4geW91ciBbc3lzdGVtIGBQQVRIYF0oaHR0cHM6Ly93d3cuamF2YS5jb20vZW4vZG93bmxvYWQvaGVscC9wYXRoLmh0bWwpIHNob3VsZCBhbHNvIGJlIHN1ZmZpY2llbnQuIEphdmEgMTEgb3IgaGlnaGVyIGlzIG5lZWRlZCBmb3IgS2FyYXRlIDEuNC5YIGFuZCBKYXZhIDE3IGlzIG5lZWRlZCBmb3IgS2FyYXRlIDEuNS4wIGFuZCBhYm92ZS4KClRoZXJlIGlzIGEgYEthcmF0ZSBMb2dgIHdpdGhpbiB0aGUgIk91dHB1dCIgdGFiIChuZXh0IHRvICJUZXJtaW5hbCIpIHR5cGljYWxseSBhdCB0aGUgYm90dG9tIG9mIHlvdXIgVlMgQ29kZSB3aW5kb3cuIFlvdSBjYW4gbG9vayBhdCBpdCB0byBmaW5kIHRoZSByZWFzb25zIGZvciBmYWlsdXJlLgoKPGltZyBzcmM9InJlc291cmNlcy9rYXJhdGUtbG9nLmpwZyIgaGVpZ2h0PSIyMDBweCIvPgoKPHA+Jm5ic3A7PC9wPgoKVG8gY2hhbmdlIHRoZSBsb2cgbGV2ZWwgeW91IGNhbiB1c2UgdGhlIFZTIENvZGUgQ29tbWFuZCBgRGV2ZWxvcGVyOiBTZXQgTG9nIExldmVsYCAoYFZpZXcgLS0+IENvbW1hbmQgUGFsZXR0ZWAgYW5kIHR5cGUgIkxvZyIpIGFuZCB0aGVuIHNlbGVjdCBgS2FyYXRlIExvZ2AuIENoYW5naW5nIHRoZSBsb2cgbGV2ZWwgdG8gYERlYnVnYCBnaXZlcyB5b3UgbW9yZSBpbmZvcm1hdGlvbi4KCjxpbWcgc3JjPSJyZXNvdXJjZXMvbG9nLWxldmVsLmpwZyIgaGVpZ2h0PSIyMDBweCIvPgoKIyMgUnVuIEZyb20gRWRpdG9yCllvdSBjYW4gcnVuIGEgZmVhdHVyZSBmaWxlIG9wZW4gaW4gdGhlIGVkaXRvciBieSB1c2luZyB0aGUgQ29kZUxlbnMuIFRoZSBrZXlib2FyZCBzaG9ydGN1dCBgW0NUUkxdYCBgW0Y1XWAgYWxzbyB3b3Jrcy4KCjxpbWcgc3JjPSJyZXNvdXJjZXMvcnVuLWZlYXR1cmUuanBnIiBoZWlnaHQ9IjM1MHB4Ii8+Cgo8cD4mbmJzcDs8L3A+CgpZb3UgY2FuIHJ1biBhIHNpbmdsZSBgU2NlbmFyaW9gIGJ5IHVzaW5nIHRoZSBDb2RlTGVucyB0aGF0IGFwcGVhcnMgYWJvdmUgaXQuCgpZb3UgY2FuIGV2ZW4gcnVuIGEgc2luZ2xlICJleGFtcGxlIiBpbiBhIGBTY2VuYXJpbyBPdXRsaW5lYCBieSByaWdodC1jbGlja2luZyBvbiBvbmUgb2YgdGhlIGRhdGEtcm93cyB3aXRoaW4gYW4gYEV4YW1wbGVzYCB0YWJsZS4KCjxpbWcgc3JjPSJyZXNvdXJjZXMvcnVuLWV4YW1wbGUuanBnIiBoZWlnaHQ9IjE4MHB4Ii8+CgojIyBMYXVuY2ggQ29uZmlndXJhdGlvbnMKVlMgQ29kZSBbbGF1bmNoLWNvbmZpZ3VyYXRpb25zXShodHRwczovL2NvZGUudmlzdWFsc3R1ZGlvLmNvbS9kb2NzL2VkaXRvci9kZWJ1Z2dpbmcpIGFyZSB1c2VmdWwgZm9yIGJlaW5nIGFibGUgdG8gcmUtcnVuIHRlc3RzIHdpdGggc3BlY2lmaWMgcGFyYW1ldGVycy4gQWxsIHRoZSB0eXBpY2FsIEthcmF0ZSBvcHRpb25zIHlvdSBuZWVkIGFyZSBzdXBwb3J0ZWQsIGluY2x1ZGluZyBjb250cm9sIG92ZXIgdGhlIEpWTSBwYXJhbWV0ZXJzIGFuZCB3b3JraW5nIGRpcmVjdG9yeS4gVGhlIGZlYXR1cmUgZmlsZSAob3IgcGF0aCB0byBzZWFyY2ggZm9yIGZlYXR1cmUgZmlsZXMpIHNob3VsZCBiZSB0aGUgbGFzdCBhcmd1bWVudC4KCkhlcmUgaXMgYW4gZXhhbXBsZSBgLnZzY29kZS9sYXVuY2guanNvbmAgZmlsZToKCmBgYGpzb24KewogICAgInZlcnNpb24iOiAiMC4yLjAiLAogICAgImNvbmZpZ3VyYXRpb25zIjogWwogICAgICAgIHsKICAgICAgICAgICAgInR5cGUiOiAia2FyYXRlIiwKICAgICAgICAgICAgIm5hbWUiOiAiZW52LXRlc3QiLAogICAgICAgICAgICAicmVxdWVzdCI6ICJsYXVuY2giLAogICAgICAgICAgICAia2FyYXRlQXJncyI6IFsKICAgICAgICAgICAgICAgICItZSIsCiAgICAgICAgICAgICAgICAidGVzdCIsCiAgICAgICAgICAgICAgICAiJHtmaWxlfSIKICAgICAgICAgICAgXQogICAgICAgIH0KICAgIF0KfQpgYGAKClRoZSBhZHZhbnRhZ2UgaXMgdGhhdCB5b3UgY2FuIHNldCB1cCBhbnkgY29tYmluYXRpb24gb2YgW0thcmF0ZSBydW50aW1lIG9wdGlvbnNdKGh0dHBzOi8vZ2l0aHViLmNvbS9rYXJhdGVsYWJzL2thcmF0ZSNrYXJhdGVvcHRpb25zKSB2aWEgYGthcmF0ZUFyZ3NgLiBGb3IgZXhhbXBsZSB5b3UgY2FuOgoqIFtydW4gdGVzdHMgaW4gcGFyYWxsZWxdKGh0dHBzOi8vZ2l0aHViLmNvbS9rYXJhdGVsYWJzL2thcmF0ZS90cmVlL21hc3Rlci9rYXJhdGUtbmV0dHkjcGFyYWxsZWwtZXhlY3V0aW9uKQoqIFtzZXQgdGhlIGVudmlyb25tZW50XShodHRwczovL2dpdGh1Yi5jb20va2FyYXRlbGFicy9rYXJhdGUvdHJlZS9tYXN0ZXIva2FyYXRlLW5ldHR5I2thcmF0ZWVudikKKiBvciBbY2hvb3NlIHRhZ3NdKGh0dHBzOi8vZ2l0aHViLmNvbS9rYXJhdGVsYWJzL2thcmF0ZS90cmVlL21hc3Rlci9rYXJhdGUtbmV0dHkjdGFncykgdG8gaW5jbHVkZSBvciBleGNsdWRlLgoKTm93IHlvdSBjYW4gcnVuIHRlc3RzIGZyb20gdGhlIFtSdW4gYW5kIERlYnVnXShodHRwczovL2NvZGUudmlzdWFsc3R1ZGlvLmNvbS9kb2NzL2VkaXRvci9kZWJ1Z2dpbmcjX2xhdW5jaC1jb25maWd1cmF0aW9ucykgdmlldyBpbiBWUyBDb2RlIGFuZCBrZXlib2FyZCBzaG9ydC1jdXRzIHN1Y2ggYXMgYEY1YCB3aWxsIHdvcmsgZm9yIHRoZSBjdXJyZW50bHkgZm9jdXNlZCBmaWxlIGluIHRoZSBlZGl0b3IuIE5vdGUgdGhhdCB5b3UgY2FuIGV2ZW4gUnVuIHdpdGhvdXQgRGVidWdnaW5nOiBgQ3RybCArIEY1YC4KCjxpbWcgc3JjPSJyZXNvdXJjZXMvbGF1bmNoLWNvbmZpZy5qcGciIGhlaWdodD0iNDAwcHgiLz4KCjxwPiZuYnNwOzwvcD4KCllvdSBjYW4gaGF2ZSBtdWx0aXBsZSBjb25maWd1cmF0aW9ucyBhbmQgZWFzaWx5IHN3aXRjaCBiZXR3ZWVuIHRoZW0uCgpZb3UgY2FuIGFkZCBgIm5vRGVidWciOiB0cnVlYCB0byB0aGUgcnVuLWNvbmZpZ3VyYXRpb24gSlNPTiB0byBmb3JjZSAiUnVuIHdpdGhvdXQgRGVidWdnaW5nIiBmb3IgY29udmVuaWVuY2UuCgpJbnN0ZWFkIG9mIGAke2ZpbGV9YCBhcyB0aGUgdmFsdWUgZm9yIGBmZWF0dXJlYCwgeW91IGNhbiB1c2UgYW55IHZhbGlkIGZvbGRlciBwYXRoIG9yIGV2ZW4gbXVsdGlwbGUgZmVhdHVyZSBmaWxlcy4KCiMjIE91dGxpbmUgVmlldwpUaGUgVlMgQ29kZSBbb3V0bGluZSB2aWV3XShodHRwczovL2NvZGUudmlzdWFsc3R1ZGlvLmNvbS9kb2NzL2dldHN0YXJ0ZWQvdXNlcmludGVyZmFjZSNfb3V0bGluZS12aWV3KSBpcyBzdXBwb3J0ZWQgc28geW91IGNhbiBuYXZpZ2F0ZSBsYXJnZSBmaWxlcyB3aXRoIGVhc2UuCgo8aW1nIHNyYz0icmVzb3VyY2VzL291dGxpbmUtdmlldy5qcGciIGhlaWdodD0iNDAwcHgiLz4KCiMjIENvZGUgRm9ybWF0dGluZwpWUyBDb2RlIFtjb2RlLWZvcm1hdHRpbmddKGh0dHBzOi8vY29kZS52aXN1YWxzdHVkaW8uY29tL2RvY3MvZWRpdG9yL2NvZGViYXNpY3MjX2Zvcm1hdHRpbmcpIHNob3J0Y3V0cyB3b3JrIHRvIGZvcm1hdCBpbmRlbnRpbmcgb2YgZmVhdHVyZSBmaWxlIGVsZW1lbnRzLgoKIyMgVGVzdCBSZXN1bHRzClRoZSBIVE1MIHJlcG9ydCBpcyBvbmUtY2xpY2sgYXdheS4KCjxpbWcgc3JjPSJyZXNvdXJjZXMvdGVzdC1yZXBvcnQtbGluay5qcGciIGhlaWdodD0iMjAwcHgiLz4KCiMjIEF1dG8gQ29tcGxldGUKQmVzaWRlcyB0aGUgc3ludGF4IHZhbGlkYXRpb24sIHlvdSBoYXZlIGF1dG8tY29tcGxldGUgZm9yIHRoZSBtb3N0IGNvbW1vbmx5IHVzZWQga2V5d29yZHMuCgo8aW1nIHNyYz0icmVzb3VyY2VzL2F1dG9jb21wbGV0ZS5qcGciIGhlaWdodD0iMjAwcHgiLz4KCiMjIENvZGUgRm9sZGluZwpZb3UgY2FuIGNvbGxhcHNlIHNlY3Rpb25zIHRvIG1ha2UgaXQgZWFzaWVyIHRvIGRlYWwgd2l0aCBsb25nIHRlc3RzLgoKPGltZyBzcmM9InJlc291cmNlcy9jb2RlLWZvbGRpbmcuanBnIiBoZWlnaHQ9IjIwMHB4Ii8+CgojIyBSZWZlcmVuY2VzCkNvbWluZyBTb29uLgoKIyMgSlNPTiBSZS1mb3JtYXR0aW5nClBsYWNlIHRoZSBjdXJzb3Igd2l0aGluIEpTT04gdG8gc2VlIG9wdGlvbnMgdG8gcmUtZm9ybWF0IGl0LCB5b3Ugd2lsbCBzZWUgYSAiYnVsYiIgaWNvbi4KCjxpbWcgc3JjPSJyZXNvdXJjZXMvanNvbi1idWxiLmpwZyIgaGVpZ2h0PSIyNTBweCIvPgoKPHA+Jm5ic3A7PC9wPgoKVGhlIGZvbGxvd2luZyBvcHRpb25zIGFyZSBwb3NzaWJsZSAoZGVwZW5kaW5nIG9uIGNvbnRleHQpOgoKKiBMZW5pZW50IC0ganVzdCBsaWtlIEpTLCB3aGVyZSBzaW5nbGUtcXVvdGVzIGFyZSB1c2VkIGFuZCBubyBxdW90ZXMgYXJlIG5lZWRlZCBmb3IgcHJvcGVydHkga2V5cwoqIFN0cmljdCAtIFN0cmljdCBKU09OLCB1c2luZyBkb3VibGUtcXVvdGVzCiogTWFrZSBzaW5nbGUgTGluZSAtIGNvbnZlcnQgbXVsdGktbGluZSBKU09OIHRvIGEgc2luZ2xlIGxpbmUKKiBNYWtlIG11bHRpLWxpbmUgLSBjb252ZXJ0IGEgc2luZ2xlIGxpbmUgb2YgSlNPTiB0byBtdWx0aS1saW5lLCBpbmNsdWRpbmcgdHJpcGxlLXF1b3RlcwoKIyMgUnVuIEZvbGRlcgoKQXMgYSBjb252ZW5pZW5jZSwgeW91IGNhbiByaWdodC1jbGljayBhbmQgcnVuIGEgZm9sZGVyIGZyb20gdGhlIGV4cGxvcmVyIHZpZXcuCgo8aW1nIHNyYz0icmVzb3VyY2VzL3J1bi1mb2xkZXIuanBnIiBoZWlnaHQ9IjQ1MHB4Ii8+CgojIyBEZWJ1ZwoKWW91IGNhbiBzZXQgYnJlYWstcG9pbnRzIG9uIEthcmF0ZSBmZWF0dXJlIGZpbGVzIGluIGRlYnVnIG1vZGUuIFRoZSBLYXJhdGUgZGVidWdnZXIgY2FuIGV2ZW4gc3RlcC1iYWNrIGFuZCBob3QtcmVsb2FkIHNpbXBsZSBlZGl0cyB0byB5b3VyIHRlc3QuCgo8aW1nIHNyYz0icmVzb3VyY2VzL2RlYnVnLmpwZyIgaGVpZ2h0PSI2MDBweCIvPgoKIyMjIERlYnVnIEphdmEgZnJvbSBLYXJhdGUKCkEgS2FyYXRlIGRlYnVnIHNlc3Npb24gd2lsbCBldmVuIHN0b3AgYXQgSmF2YSBicmVha3BvaW50cy4KCiMjIyBEZWJ1ZyBLYXJhdGUgZnJvbSBKYXZhCgpZb3UgY2FuIGFsc28gc3RhcnQgYSBub3JtYWwgSmF2YSBkZWJ1ZyBzZXNzaW9uIHRoYXQgdXNlcyB0aGUgS2FyYXRlIGBSdW5uZXJgIEphdmEgQVBJIGJ1dCBzdGlsbCBzdG9wIGF0IEthcmF0ZSBicmVha3BvaW50cy4gVGhpcyByZXF1aXJlcyB5b3UgdG8gYmUgdXNpbmcgS2FyYXRlIHZlcnNpb24gMS41LjAuUkMzIG9yIGdyZWF0ZXIuCgojIyBPZmZsaW5lIExpY2Vuc2UKCj4gWyFJTVBPUlRBTlRdICAKPiBUaGUgT2ZmbGluZSBMaWNlbnNlIGlzIGEgW3BhaWQgZmVhdHVyZSBmb3IgZW50ZXJwcmlzZXNdKGh0dHBzOi8vd3d3LmthcmF0ZWxhYnMuaW8vcHJpY2luZykuIFBsZWFzZSBtYWtlIHN1cmUgeW91IGtub3cgd2hvIHlvdXIgZGVzaWduYXRlZCBhZG1pbiBpcyBiZWZvcmUgeW91IHBlcmZvcm0gdGhpcyBzdGVwLgoKClRoZSBkaWFsb2cgeW91IHNlZSB3aGVuIHlvdSBpbnZva2UgdGhlIFtgU2lnbiBJbiAvIE1hbmFnZSBMaWNlbnNlYF0oI2xpY2Vuc2UtYWN0aXZhdGlvbikgY29tbWFuZCBsb29rcyBsaWtlIHRoaXMuCgo8aW1nIHNyYz0icmVzb3VyY2VzL2xpY2Vuc2UtZGlhbG9nLmpwZyIgaGVpZ2h0PSIxMDBweCIvPgoKPHA+Jm5ic3A7PC9wPgoKQ2xpY2sgdGhlIGBPZmZsaW5lIExpY2Vuc2VgIGJ1dHRvbi4gQSB1bmlxdWUgY29kZSBmb3IgeW91ciBzeXN0ZW0gd2lsbCBiZSBzaG93biB3aGljaCB5b3UgY2FuIGN1dCBhbmQgcGFzdGUuIEluIHRoZSBleGFtcGxlIGJlbG93LCBpdCBpczogYERoSE9GS0h2ZDdYWVRpK3JRbk5USlE9PWAKCjxpbWcgc3JjPSJyZXNvdXJjZXMvb2ZmbGluZS1saWNlbnNlLWNvZGUuanBnIiBoZWlnaHQ9IjE1MHB4Ii8+Cgo8cD4mbmJzcDs8L3A+CgpTZW5kIHRoYXQgdW5pcXVlIGNvZGUgdG8geW91ciBkZXNpZ25hdGVkIGFkbWluLiBZb3Ugd2lsbCBiZSBpc3N1ZWQgYSBsaWNlbnNlIHRoYXQgaXMgdGllZCB0byB0aGlzIHVuaXF1ZSBjb2RlLiBUbyBhcHBseSB0aGUgbGljZW5zZSwgY29weSAqYWxsKiB0aGUgdGV4dCBmcm9tIHRoZSBsaWNlbnNlIGZpbGUgKHdoaWNoIHNob3VsZCBzdGFydCB3aXRoOiBgLS0tLS1CRUdJTiBMSUNFTlNFIEZJTEUtLS0tLWApIGFuZCBwYXN0ZSBpdCBpbnRvIHRoZSB0ZXh0LWZpZWxkIHNob3duIGFib3ZlLiBNYWtlIHN1cmUgeW91ICpjbGVhciogdGhlIHRleHQtYm94IGJlZm9yZSBwYXN0aW5nIHRoZSBsaWNlbnNlIGZpbGUgdGV4dCBvciBqdXN0IHJlcGxhY2UgdGhlIGluaXRpYWwgY29udGVudHMuIE5vdyB5b3Ugc2hvdWxkIHNlZSBzb21ldGhpbmcgbGlrZSB0aGlzLgoKPGltZyBzcmM9InJlc291cmNlcy9vZmZsaW5lLWxpY2Vuc2UtcGFzdGUuanBnIiBoZWlnaHQ9IjE1MHB4Ii8+Cgo8cD4mbmJzcDs8L3A+CgpDbGljayBbRU5URVJdIGFuZCBzaG91bGQgc2VlIGEgY29uZmlybWF0aW9uIG1lc3NhZ2Ugd2l0aCB5b3VyIGxpY2Vuc2UgZGV0YWlscy4KCgoKCgo= + readmeEtag: '"b1c7d75a5d766d3e2ce1b9e073a6617f9a5e0b14fa7a6a00b9db20c0a995f34e"' + readmeLastModified: Fri, 12 Jul 2024 03:32:45 GMT repositoryId: 528727790 description: Karate Visual Studio Code Extension created: '2022-08-25T06:43:13Z' - updated: '2024-07-03T05:46:13Z' + updated: '2024-07-12T03:32:51Z' language: null archived: false stars: 7 @@ -17678,8 +17678,8 @@ forks: 1 owner: karatelabs logo: https://avatars.githubusercontent.com/u/91312095?v=4 - repoEtag: '"157fb8661b449f10d1f36f047ba43851019da9403311948bd2497314e46a0576"' - repoLastModified: Wed, 03 Jul 2024 05:46:13 GMT + repoEtag: '"f8fd2073abd940e1c21e87f83d251a1ac08a73487102347e9e2cf94c62095f71"' + repoLastModified: Fri, 12 Jul 2024 03:32:51 GMT category: Testing foundInMaster: true oldLocations: @@ -17704,7 +17704,7 @@ owner: meabed logo: https://avatars.githubusercontent.com/u/45731?v=4 license: MIT - repoEtag: '"de2bdc132fd8b6c81f222004989522bc17c3993d2d3396a7a5c49590cede2aa3"' + repoEtag: '"e195ee3b7c51b8a9beefd036cb9923255c4ba4429e36781fb21dbabccecb0546"' repoLastModified: Fri, 12 Jan 2024 18:23:08 GMT foundInMaster: true category: @@ -18028,7 +18028,7 @@ owner: Aptori-dev logo: https://avatars.githubusercontent.com/u/140379261?v=4 license: MIT - repoEtag: '"e68113f300f212d12c494ded7b01136932b39c46c1218b8f72e05e4f94a1dfba"' + repoEtag: '"fc957be5591a0ed66b1aabafb145abe35f4c7eb80578b059badee47d624b5cb1"' repoLastModified: Thu, 11 Jul 2024 23:13:03 GMT category: Server Implementations foundInMaster: true @@ -18736,7 +18736,7 @@ repositoryId: 474063683 description: 'doSonarAPI: static analyzer for OpenAPI contracts' created: '2022-03-25T15:25:42Z' - updated: '2024-06-28T10:59:39Z' + updated: '2024-07-12T12:08:21Z' language: Java archived: false stars: 5 @@ -18745,8 +18745,8 @@ owner: apiaddicts logo: https://avatars.githubusercontent.com/u/31730093?v=4 license: LGPL-3.0 - repoEtag: '"14f428702944b572fa43fe85bdb156cdd5ae42f4118930656e8e43739bd87fe5"' - repoLastModified: Fri, 28 Jun 2024 10:59:39 GMT + repoEtag: '"4bd7bec532f54cdaa7fca5692bdce7f3595f17eb5ccc76cbcf457932c37244f2"' + repoLastModified: Fri, 12 Jul 2024 12:08:21 GMT category: Server Implementations foundInMaster: true - source: openapi3 tags @@ -19579,13 +19579,13 @@ v3: true repositoryMetadata: base64Readme: >- - IyBUb3VyT3B0aW1pemVyIEFuZ3VsYXIgRGVtbyBBcHBsaWNhdGlvbiAtIFNvdXJjZQoKPGEgaHJlZj0iaHR0cHM6Ly9kbmEtZXZvbHV0aW9ucy5jb20vIiB0YXJnZXQ9Il9ibGFuayI+PGltZyBzcmM9Imh0dHBzOi8vZG9jcy5kbmEtZXZvbHV0aW9ucy5jb20vaW5kZXhyZXMvZG5hLXRlbXAtbG9nby5wbmciIHdpZHRoPSIxMTAiCnRpdGxlPSJETkEtRXZvbHV0aW9ucyIgYWx0PSJETkEtRXZvbHV0aW9ucyI+PC9hPgoKVG8gdXRpbGl6ZSA8YSBocmVmPSJodHRwczovL2dpdGh1Yi5jb20vRE5BLUV2b2x1dGlvbnMvRG9ja2VyLVJFU1QtVG91ck9wdGltaXplci9ibG9iL21haW4vUkVBRE1FLm1kI2hvdy10by1zdGFydC1qb3B0dG91cm9wdGltaXplci1kb2NrZXIiIHRhcmdldD0iX2JsYW5rIj5KT3B0VG91ck9wdGltaXplci1Eb2NrZXI8L2E+LCB3ZSBjcmVhdGVkIGFuIEFuZ3VsYXItRGVtbyBhcHBsaWNhdGlvbi4gVGhpcyBkZW1vIGFwcGxpY2F0aW9uIGlzIGhvc3RlZCBvbiA8YSBocmVmPSJodHRwczovL2F6dXJlLm1pY3Jvc29mdC5jb20vIiB0YXJnZXQ9Il9ibGFuayI+TWljcm9zb2Z0IEF6dXJlPC9hPiBhbmQgaXMgbWFkZSBhdmFpbGFibGUgdmlhIDxhIGhyZWY9Imh0dHBzOi8vZGVtby5kbmEtZXZvbHV0aW9ucy5jb20vIiB0YXJnZXQ9Il9ibGFuayI+aHR0cHM6Ly9kZW1vLmRuYS1ldm9sdXRpb25zLmNvbTwvYT4uIEhlcmUgd2Ugd291bGQgbGlrZSB0byBzaGFyZSB0aGUgbGF0ZXN0IHNvdXJjZS1jb2RlIG9mIHRoaXMgcHJvamVjdC4gVGhpcyBpcyBub3QgYSBjbGFzc2ljYWwgIkhlbGxvIFdvcmxkIiBwcm9qZWN0LCBhcyBpdCBpcyB1c2luZyBtdWx0aXBsZSBkZXBlbmRlbmNpZXMgYW5kIGFkdmFuY2VkIGNvbmNlcHRzLiBIb3dldmVyLCBmZWVsIGZyZWUgdG8gZXhwbG9yZSB0aGUgcHJvamVjdCBhbmQgZXh0cmFjdCB3aGF0ZXZlciB5b3UgbmVlZCB0byBnZXQgc3RhcnRlZCB3aXRoIEpPcHQuCgoqKlVwZGF0ZSBKYW51YXJ5IDd0aCAyMDI0OioqCgpGcm9tIG5vdyBvbiwgdGhlIEFuZ3VsYXIgRGVtbyB1c2VzIEFuZ3VsYXIgMTcuIFdlIGFsc28gdXBkYXRlZC91cGdyYWRlZCBtdWx0aXBsZSBvdGhlciBkZXBlbmRlbmNpZXMuIFRoZSBnZW5lcmF0ZWQgbW9kZWxzIGFyZSB1c2luZyBKT3B0LlRvdXJPcHRpbWl6ZXIgd2l0aCAqKnZlcnNpb24gMS4yLjYgb3IgaGlnaGVyKiouIEluIGFkZGl0aW9uLCBhICJmcmVlIG1vdmluZyBleGFtcGxlIiB3YXMgYWRkZWQuIE5vZGVzIGFuZCBSZXNvdXJjZXMgY2FuIGJlIGZyZWVseSBwb3NpdGlvbmVkIHZpYSBkcmFnIGFuZCBkcm9wLgoKKipVcGRhdGUgSnVuZSA4dGggMjAyMToqKgoKRnJvbSBub3cgb24sIHRoZSBBbmd1bGFyIERlbW8gdXNlcyBvdXIgbmV3IHN3YWdnZXIgZGVmaW5pdGlvbiAoc2VlIAo8YSBocmVmPSJodHRwczovL3N3YWdnZXIuZG5hLWV2b2x1dGlvbnMuY29tL3YzL2FwaS1kb2NzL09wdGltaXplIiB0YXJnZXQ9Il9ibGFuayI+c3dhZ2dlci5kbmEtZXZvbHV0aW9ucy5jb20vdjMvYXBpLWRvY3MvT3B0aW1pemU8L2E+KS4gVGhpcyByZXF1aXJlcyB1c2luZyBKT3B0LlRvdXJPcHRpbWl6ZXIgd2l0aCAqKnZlcnNpb24gMS4wLjMgb3IgaGlnaGVyKiouIFRoaXMgc3dhZ2dlciBkZWZpbml0aW9uIGhhcyB0aGUgYWR2YW50YWdlIHRoYXQgaXQgZW5hYmxlcyBhbG1vc3QgYWxsIGZlYXR1cmVzIG9mIEpPcHQgYXQgdGhlIFJFU1QtZW5kcG9pbnQuCgoqKlVwZGF0ZSAyMXN0IFNlcHRlbWJlciAyMDIxOioqClRoZSByZXBsYWNlbWVudCBkZXNjcmliZWQgaW4gKlVwZGF0ZSBKdW5lIDIwMjEqIGlzIG5vIGxvbmdlciBuZWNlc3NhcnkuIEhvd2V2ZXIsIG1vZGVscyBhbHJlYWR5IGNyZWF0ZWQgbmVlZCB0byBiZSByZWNyZWF0ZWQuIEZ1cnRoZXIsIHRoZSBsZWdhY3kgZW5kcG9pbnQgaXMgZHJvcHBlZCwgYW5kIHRoZSBtYWluLWVuZHBvaW50IGNoYW5nZWQgdG8gPGEgaHJlZj0iaHR0cHM6Ly9zd2FnZ2VyLmRuYS1ldm9sdXRpb25zLmNvbS92My9hcGktZG9jcy9PcHRpbWl6ZSIgdGFyZ2V0PSJfYmxhbmsiPnN3YWdnZXIuZG5hLWV2b2x1dGlvbnMuY29tL3YzL2FwaS1kb2NzL09wdGltaXplPC9hPi4KCi0tLQoKIyBDb250YWN0CgpJZiB5b3UgbmVlZCBhbnkgaGVscCwgcGxlYXNlIGNvbnRhY3QgdXMgdmlhIG91ciBjb21wYW55IHdlYnNpdGUgPGEgaHJlZj0iaHR0cHM6Ly93d3cuZG5hLWV2b2x1dGlvbnMuY29tIiB0YXJnZXQ9Il9ibGFuayI+d3d3LmRuYS1ldm9sdXRpb25zLmNvbTwvYT4gb3Igd3JpdGUgYW4gZW1haWwgdG8gPGEgaHJlZj0ibWFpbHRvOmluZm9AZG5hLWV2b2x1dGlvbnMuY29tIj5pbmZvQGRuYS1ldm9sdXRpb25zLmNvbTwvYT4uCgotLS0KCiMjIEZ1cnRoZXIgRG9jdW1lbnRhdGlvbiBhbmQgaGVscGZ1bCBMaW5rcwoKT3VyIGNvbnRlbnQ6Ci0gRnVydGhlciBkb2N1bWVudGF0aW9uIC0gPGEgaHJlZj0iaHR0cHM6Ly9kb2NzLmRuYS1ldm9sdXRpb25zLmNvbSIgdGFyZ2V0PSJfYmxhbmsiPmRvY3MuZG5hLWV2b2x1dGlvbnMuY29tPC9hPgotIFNwZWNpYWwgZmVhdHVyZXMJLSA8YSBocmVmPSJodHRwczovL2RvY3MuZG5hLWV2b2x1dGlvbnMuY29tL292ZXJ2aWV3X2RvY3Mvc3BlY2lhbF9mZWF0dXJlcy9TcGVjaWFsX0ZlYXR1cmVzLmh0bWwiIHRhcmdldD0iX2JsYW5rIj5PdmVydmlldyBvZiBzcGVjaWFsIGZlYXR1cmVzPC9hPgotIE91ciBjb21wYW55IHdlYnNpdGUgLSA8YSBocmVmPSJodHRwczovL3d3dy5kbmEtZXZvbHV0aW9ucy5jb20iIHRhcmdldD0iX2JsYW5rIj53d3cuZG5hLWV2b2x1dGlvbnMuY29tPC9hPgotIE91ciBvZmZpY2lhbCByZXBvc2l0b3J5IC0gPGEgaHJlZj0iaHR0cHM6Ly9wdWJsaWMucmVwby5kbmEtZXZvbHV0aW9ucy5jb20iIHRhcmdldD0iX2JsYW5rIj5wdWJsaWMucmVwby5kbmEtZXZvbHV0aW9ucy5jb208L2E+Ci0gT3VyIG9mZmljaWFsIEphdmFEb2NzIC0gPGEgaHJlZj0iaHR0cHM6Ly9wdWJsaWMuamF2YWRvYy5kbmEtZXZvbHV0aW9ucy5jb20iIHRhcmdldD0iX2JsYW5rIj5wdWJsaWMuamF2YWRvYy5kbmEtZXZvbHV0aW9ucy5jb208L2E+Ci0gT3VyIFlvdVR1YmUgY2hhbm5lbCAtIDxhIGhyZWY9Imh0dHBzOi8vd3d3LnlvdXR1YmUuY29tL2NoYW5uZWwvVUN6ZlpqSkxwNVJyazdVMlVLc09mOEZ3IiB0YXJnZXQ9Il9ibGFuayI+RE5BIFR1dG9yaWFsczwvYT4KLSBPdXIgRG9ja2VySHViIGNoYW5uZWwgLSA8YSBocmVmPSJodHRwczovL2h1Yi5kb2NrZXIuY29tL3UvZG5hZXZvbHV0aW9ucyIgdGFyZ2V0PSJfYmxhbmsiPkROQSBEb2NrZXJIdWI8L2E+Ci0gT3VyIExpbmtlZEluIGNoYW5uZWwgLSA8YSBocmVmPSJodHRwczovL3d3dy5saW5rZWRpbi5jb20vY29tcGFueS9kbmEtZXZvbHV0aW9ucy8iIHRhcmdldD0iX2JsYW5rIj5ETkEgTGlua2VkSW48L2E+CgpUaGlyZC1wYXJ0eToKLSA8YSBocmVmPSJodHRwczovL2FuZ3VsYXIuaW8vY2xpIiB0YXJnZXQ9Il9ibGFuayI+QW5ndWxhciBDTEk8L2E+Ci0gPGEgaHJlZj0iaHR0cHM6Ly93d3cubnBtanMuY29tL3BhY2thZ2UvQG9wZW5hcGl0b29scy9vcGVuYXBpLWdlbmVyYXRvci1jbGkiIHRhcmdldD0iX2JsYW5rIj5PcGVuIEFwaSBHZW5lcmF0b3I8L2E+Ci0gPGEgaHJlZj0iaHR0cHM6Ly93d3cubW9ra2FwcHMuZGUvYmxvZy9ob3ctdG8tZ2VuZXJhdGUtYW5ndWxhci1hbmQtc3ByaW5nLWNvZGUtZnJvbS1vcGVuLWFwaS1zcGVjaWZpY2F0aW9uLyIgdGFyZ2V0PSJfYmxhbmsiPkdlbmVyYXRlIEFuZ3VsYXIgYW5kIFNwcmluZyBjb2RlIGZyb20gT3BlbkFwaTwvYT4KLSA8YSBocmVmPSJodHRwczovL21hdGVyaWFsLmFuZ3VsYXIuaW8vIiB0YXJnZXQ9Il9ibGFuayI+QW5ndWxhciBNYXRlcmlhbDwvYT4KCi0tLQoKIyMgT3ZlcnZpZXcKCiogW0dlbmVyYWwgLSBETkEgRGVtbyBBcHBsaWNhdGlvbl0oI2dlbmVyYWwtZG5hLWRlbW8tYXBwbGljYXRpb24pCiogW1NlcnZlIHdpdGggRG9ja2VyIChyZWNvbW1lbmRlZCldKCNzZXJ2ZS13aXRoLWRvY2tlci1yZWNvbW1lbmRlZCkKKiBbU2VydmUgd2l0aG91dCBEb2NrZXJdKCNzZXJ2ZS13aXRob3V0LWRvY2tlcikKKiBbVXBkYXRlL0dlbmVyYXRlIHRoZSB0eXBlc2NyaXB0IG1vZGVscyB1c2luZyBPcGVuQXBpIEdlbmVyYXRvcl0oI3VwZGF0ZS1nZW5lcmF0ZS10aGUtdHlwZXNjcmlwdC1tb2RlbHMtdXNpbmctb3BlbmFwaS1nZW5lcmF0b3IpCiogW1ZpZGVvIC0gSG93IHRvIHVzZSB0aGUgRGVtby1BcHBsaWNhdGlvbl0oI3ZpZGVvLWhvdy10by11c2UtdGhlLWRlbW8tYXBwbGljYXRpb24pCiogW1doYXQncyBuZXh0P10oI3doYXQtcy1uZXh0KQoKLS0tCgojIyBHZW5lcmFsIC0gRE5BIERlbW8gQXBwbGljYXRpb24KClRoZSBhbmd1bGFyLWRlbW8gYXBwbGljYXRpb24gd2FzIGdlbmVyYXRlZCB3aXRoIDxhIGhyZWY9Imh0dHBzOi8vZ2l0aHViLmNvbS9hbmd1bGFyL2FuZ3VsYXItY2xpIiB0YXJnZXQ9Il9ibGFuayI+QW5ndWxhciBDTEkgdmVyc2lvbiAxNy4wLjM8L2E+LiBGdXJ0aGVyLCB3ZSB1dGlsaXplZCA8YSBocmVmPSJodHRwczovL2dpdGh1Yi5jb20vT3BlbkFQSVRvb2xzL29wZW5hcGktZ2VuZXJhdG9yIiB0YXJnZXQ9Il9ibGFuayI+T3BlbkFwaSBHZW5lcmF0b3I8L2E+IHRvIGF1dG9tYXRpY2FsbHkgY3JlYXRlIHRoZSByZXF1aXJlZCBUeXBlU2NyaXB0IG1vZGVscyBmcm9tIHRoZSBPcGVuQXBpIGRlZmluaXRpb24gcHJvdmlkZWQgZnJvbSBvdXIgU3dhZ2dlciBlbmRwb2ludCBvZiBKT3B0VG91ck9wdGltaXplci4KCjxpbWcgc3JjPSJodHRwczovL2RuYS1ldm9sdXRpb25zLmNvbS93cC1jb250ZW50L3VwbG9hZHMvMjAyMC8xMS9ob3ctdG8tdmlkZW8tcHJldi5naWYiIHdpZHRoPSI0NTAiCnRpdGxlPSJETkEtRXZvbHV0aW9ucyBEZW1vIEFwcGxpY2F0aW9uIFByZXZpZXciIGFsdD0iRE5BLUV2b2x1dGlvbnMgRGVtbyBBcHBsaWNhdGlvbiBQcmV2aWV3Ij4KCi0tLQoKIyMgU2VydmUgd2l0aCBEb2NrZXIgKHJlY29tbWVuZGVkKQoKV2UgcmVjb21tZW5kIHNlcnZpbmcgdGhlIERlbW8gQXBwbGljYXRpb24gd2l0aCBkb2NrZXIsIGVzcGVjaWFsbHkgd2hlbiB5b3UgYXJlIG5ldyB0byBBbmd1bGFyLiBUaGUgZG9ja2VyIGJ1aWxkIHdpbGwgaW5zdGFsbCBhbGwgdGhlIHJlcXVpcmVkIGRlcGVuZGVuY2llcyBmb3IgeW91LiBZb3UgY2FuIG1vZGlmeSB0aGUgY29kZSBpbiB5b3VyIGRlc2lyZWQgSURFIGFuZCBidWlsZCB5b3VyIGN1c3RvbSBpbWFnZS4KCiMjIyBQcmVyZXF1aXNpdGVzCgoxKSBJbnN0YWxsIGEgRG9ja2VyIGVudmlyb25tZW50IGFuZCBtYWtlIHN1cmUgYGBkb2NrZXJgYCBpcyBhdmFpbGFibGUgaW4geW91ciBjb21tYW5kIGxpbmUuCgoyKSBFdmVuIHRob3VnaCB0aGUgRGVtby1BcHBsaWNhdGlvbiBuZWVkcyBubyBUb3VyT3B0aW1pemVyIHRvIHN0YXJ0LCB5b3UgbmVlZCB0byBwcm92aWRlIGEgcnVubmluZyBUb3VyT3B0aW1pemVyIGluc3RhbmNlIHRvIHRlc3QgdGhlIGZ1bGwgZnVuY3Rpb25hbGl0eSBvZiB0aGUgRGVtby1BcHBsaWNhdGlvbi4gUGxlYXNlIHJlYWQgdGhlIGRvY3VtZW50YXRpb24gb24gaG93IHRvIDxhIGhyZWY9Imh0dHBzOi8vZ2l0aHViLmNvbS9ETkEtRXZvbHV0aW9ucy9Eb2NrZXItUkVTVC1Ub3VyT3B0aW1pemVyL2Jsb2IvbWFpbi9SRUFETUUubWQjaG93LXRvLXN0YXJ0LWpvcHR0b3Vyb3B0aW1pemVyLWRvY2tlciIgdGFyZ2V0PSJfYmxhbmsiPnN0YXJ0IHRoZSBUb3VyT3B0aW1pemVyPC9hPi4KCgojIyMgU3RhcnQgdGhlIGltYWdlCgpQbGVhc2UgdmlzaXQgPGEgaHJlZj0iaHR0cHM6Ly9odWIuZG9ja2VyLmNvbS9yZXBvc2l0b3J5L2RvY2tlci9kbmFldm9sdXRpb25zL2pvcHRfZGVtb2FwcGxpY2F0aW9uL2dlbmVyYWwiIHRhcmdldD0iX2JsYW5rIj5odHRwczovL2h1Yi5kb2NrZXIuY29tL3JlcG9zaXRvcnkvZG9ja2VyL2RuYWV2b2x1dGlvbnMvam9wdF9kZW1vYXBwbGljYXRpb24vZ2VuZXJhbDwvYT4gYW5kIGZvbGxvdyB0aGUgaW5zdHJ1Y3Rpb25zIGlmIHlvdSB3YW50IHRvIHN0YXJ0IHRoZSBwcmUtYnVpbHQgaW1hZ2Ugd2l0aG91dCB1c2luZyB0aGUgc291cmNlcy4gCgojIyMgQnVpbGQgdGhlIGltYWdlIGZyb20gc2NyYXRjaAoKMSkgQ2xvbmUgdGhpcyByZXBvc2l0b3J5IGFuZCBvcGVuIGl0IGluIHlvdXIgZGVzaXJlZCBJREUgKGUuZy4gPGEgaHJlZj0iaHR0cHM6Ly9jb2RlLnZpc3VhbHN0dWRpby5jb20vIiB0YXJnZXQ9Il9ibGFuayI+VmlzdWFsIFN0dWRpbyBDb2RlPC9hPikgYW5kIG1vZGlmeSB0aGUgY29kZSBpZiB5b3UgbGlrZS4KMikgPGEgaHJlZj0iaHR0cHM6Ly9kb2NzLmRvY2tlci5jb20vZW5naW5lL3JlZmVyZW5jZS9jb21tYW5kbGluZS9idWlsZC8iIHRhcmdldD0iX2JsYW5rIj5CdWlsZDwvYT4gdGhlIGRvY2tlciBpbWFnZSB1c2luZyB0aGUgYGBEb2NrZXJmaWxlYGAgaW4gdGhlIG1haW4gcHJvamVjdCBwYXRoLCBieSBydW5uaW5nOgoKQVRURU5USU9OOiBOb2RlLmpzIGR1cmluZyB0aGUgYnVpbGQgcHJvY2VzcyBjYW4gYmUgcXVpdGUgbWVtb3J5IGNvbnN1bWluZy4gU28gbWFrZSBzdXJlIHlvdXIgZG9ja2VyIGVudmlyb25tZW50IGhhcyBhdCBsZWFzdCA0IEdCIG9mIFJhbS4gCgpgYGB4bWwKZG9ja2VyIGJ1aWxkIC10IGRuYV9jdXN0b21fZGVtb19pbWFnZSAuCmBgYAoKIyMjIFJ1biBhIGNvbnRhaW5lcgoKMSkgUnVuIHRoZSBpbWFnZSBiYXNlZCBvbiB5b3VyIGZyZXNobHkgY3JlYXRlZCBpbWFnZToKCmBgYHhtbApkb2NrZXIgcnVuIC1kIC0tcm0gXAoJLS1uYW1lIG15Sk9wdFRvdXJPcHRpbWl6ZXJEZW1vIFwKCS1wIDMwMDA6ODAgXAoJLXYgJHtQV0R9Oi91c3Ivc3JjL2FwcCBcCgktZSBKT1BUX1NXQUdHRVJfSE9TVD0iaHR0cDovL2xvY2FsaG9zdCIgXAoJLWUgSk9QVF9TV0FHR0VSX1BPUlQ9IjgwODEiIFwKCWRuYV9jdXN0b21fZGVtb19pbWFnZQpgYGAKClNhbWUgY29tbWFuZCBhcyBhIHNpbmdsZSBsaW5lOgoKYGBgeG1sCmRvY2tlciBydW4gLWQgLS1ybSAtLW5hbWUgbXlKT3B0VG91ck9wdGltaXplckRlbW8gLXAgMzAwMDo4MCAtdiAke1BXRH06L3Vzci9zcmMvYXBwIC1lIEpPUFRfU1dBR0dFUl9IT1NUPSJodHRwOi8vbG9jYWxob3N0IiAtZSBKT1BUX1NXQUdHRVJfUE9SVD0iODA4MSIgZG5hX2N1c3RvbV9kZW1vX2ltYWdlCmBgYAoKT3BlbiA8YSBocmVmPSJodHRwOi8vbG9jYWxob3N0OjMwMDAiIHRhcmdldD0iX2JsYW5rIj5odHRwOi8vbG9jYWxob3N0OjMwMDA8L2E+LCBhbmQgeW91IHNob3VsZCBzZWUgdGhlIERlbW8gQXBwbGljYXRpb24uIElmIDxhIGhyZWY9Imh0dHBzOi8vZ2l0aHViLmNvbS9ETkEtRXZvbHV0aW9ucy9Eb2NrZXItUkVTVC1Ub3VyT3B0aW1pemVyL2Jsb2IvbWFpbi9SRUFETUUubWQjaG93LXRvLXN0YXJ0LWpvcHR0b3Vyb3B0aW1pemVyLWRvY2tlciIgdGFyZ2V0PSJfYmxhbmsiPkpPcHRUb3VyT3B0aW1pemVyPC9hPiBpcyBub3QgcnVubmluZyBpbiB0aGUgYmFja2dyb3VuZCwgeW91IGNhbiAqKk5PVCoqIHN0YXJ0IGFueSBPcHRpbWl6YXRpb24uIEhvd2V2ZXIsIHlvdSBzaG91bGQgc2VlIHRoZSBzdGFydGluZyBwYWdlIG9mIHRoZSBEZW1vIEFwcGxpY2F0aW9uLiBCeSBkZWZhdWx0LCB0aGUgVG91ck9wdGltaXplciBpcyBhc3N1bWVkIHRvIGJlIGF2YWlsYWJsZSBhdCA8YSBocmVmPSJodHRwOi8vbG9jYWxob3N0OjgwODEiIHRhcmdldD0iX2JsYW5rIj5odHRwOi8vbG9jYWxob3N0OjgwODE8L2E+IGFuZCBpcyBzdGFydGVkIHdpdGggdGhlICJjb3JzIiBwcm9maWxlLiBZb3UgY2FuIGFkanVzdCB0aGUgZGVmYXVsdCBzZXR0aW5ncyBmb3IgaG9zdCBhbmQgcG9ydCBpbiB0aGUgYGBlbnZpcm9ubWVudC50c2BgIGZpbGUuCgpZb3UgY2FuIHByb3ZpZGUgdGhyZWUgZW52aXJvbm1lbnQgdmFyaWFibGVzOgoqIGBgSk9QVF9TV0FHR0VSX0hPU1RgYDogVGhlIGFkZHJlc3Mgb2YgeW91ciBydW5uaW5nIFRvdXJPcHRpbWl6ZXIuIElmIHlvdSBydW4gdGhlIGRvY2tlciBpbWFnZSBvZiB0aGUgVG91ck9wdGltaXplciBsb2NhbGx5LCB0aGlzIGlzIGBgaHR0cDovL2xvY2FsaG9zdGBgLgoqIGBgSk9QVF9TV0FHR0VSX1BPUlRgYDogVGhlIHBvcnQgb2YgeW91ciBydW5uaW5nIFRvdXJPcHRpbWl6ZXIuIElmIHlvdSBydW4gdGhlIGRvY2tlciBpbWFnZSBvZiB0aGUgVG91ck9wdGltaXplciBsb2NhbGx5LCB0aGlzIGlzIGBgODA4MWBgLgoqIGBgSU5QUk9EVUNUSU9OYGA6IFRoaXMgdmFsdWUgaXMgYGBmYWxzZWBgIGJ5IGRlZmF1bHQuIElmIHlvdSBhcmUgY2hhbmdpbmcgaXQgdG8gYGB0cnVlYGAsIG91ciBvZmZpY2lhbCBUb3VyT3B0aW1pemVyIGVuZHBvaW50IGlzIHVzZWQgYnkgZGVmYXVsdC4gSG93ZXZlciwgKip0cnkgdG8gYXZvaWQgdGhpcyoqLCBhcyB3ZSBhcmUgZ29pbmcgdG8gYmxvY2sgSVBzIHdpdGggdG9vIG1hbnkgcmVxdWVzdHMuIEZ1cnRoZXIsIG91ciBvZmZpY2lhbCBlbmRwb2ludCBoYXMgYSBsaW1pdGF0aW9uIG9mIDIwIGVsZW1lbnRzIHRvIGJlIG9wdGltaXplZCwgcmVnYXJkbGVzcyBvZiB5b3VyIGxpY2Vuc2UuIFlvdSBjYW4gY2hhbmdlIHRoZSBwcm9kdWN0aW9uIGVudmlyb25tZW50IHNldHRpbmdzIGJ5IGVkaXRpbmcgdGhlIGZpbGU6IGBgZW52aXJvbm1lbnQucHJvZC50c2BgLgoKCi0tLQoKIyMgU2VydmUgd2l0aG91dCBEb2NrZXIKCk9mIGNvdXJzZSwgeW91IGNhbiBob3N0IHRoZSBEZW1vLUFwcGxpY2F0aW9uIEFuZ3VsYXIgUHJvamVjdCBsb2NhbGx5IHdpdGhvdXQgdXNpbmcgZG9ja2VyLiBIb3dldmVyLCB5b3UgaGF2ZSB0byBtYWtlIHN1cmUgeW91ciBlbnZpcm9ubWVudCBpcyBzZXQgdXAgY29ycmVjdGx5LgoKIyMjIFByZXJlcXVpc2l0ZXMgKGZvciB1c2luZyBgYG5wbWBgIGFuZCBgYG5nYGApCgoxKSBGaXJzdCwgeW91IG5lZWQgdG8gbWFrZSBzdXJlIDxhIGhyZWY9Imh0dHBzOi8vd3d3Lm5wbWpzLmNvbS9nZXQtbnBtIiB0YXJnZXQ9Il9ibGFuayI+bnBtIChOb2RlIFBhY2thZ2UgTWFuYWdlcik8L2E+IGlzIGluc3RhbGxlZC4gICAKCjIpIEZ1cnRoZXIsIHlvdSBuZWVkIHRvIGluc3RhbGwgPGEgaHJlZj0iaHR0cHM6Ly9hbmd1bGFyLmlvL2NsaSIgdGFyZ2V0PSJfYmxhbmsiPm5nIChBbmd1bGFyIENMSSk8L2E+CgozKSBFdmVuIHRob3VnaCB0aGUgRGVtby1BcHBsaWNhdGlvbiBuZWVkcyBubyBUb3VyT3B0aW1pemVyIHRvIHN0YXJ0LCB5b3UgbmVlZCB0byBwcm92aWRlIGEgcnVubmluZyBUb3VyT3B0aW1pemVyIGluc3RhbmNlIHRvIHRlc3QgdGhlIGZ1bGwgZnVuY3Rpb25hbGl0eSBvZiB0aGUgRGVtby1BcHBsaWNhdGlvbi4gUGxlYXNlIHJlYWQgdGhlIGRvY3VtZW50YXRpb24gb24gaG93IHRvIDxhIGhyZWY9Imh0dHBzOi8vZ2l0aHViLmNvbS9ETkEtRXZvbHV0aW9ucy9Eb2NrZXItUkVTVC1Ub3VyT3B0aW1pemVyL2Jsb2IvbWFpbi9SRUFETUUubWQjaG93LXRvLXN0YXJ0LWpvcHR0b3Vyb3B0aW1pemVyLWRvY2tlciIgdGFyZ2V0PSJfYmxhbmsiPnN0YXJ0IHRoZSBUb3VyT3B0aW1pemVyPC9hPi4KCgojIyMgU2VydmUgdGhlIERlbW8gQXBwbGljYXRpb24KCjEuIENsb25lIHRoaXMgcmVwb3NpdG9yeSBhbmQgb3BlbiBpdCBpbiB5b3VyIGRlc2lyZWQgSURFIChlLmcuIDxhIGhyZWY9Imh0dHBzOi8vY29kZS52aXN1YWxzdHVkaW8uY29tLyIgdGFyZ2V0PSJfYmxhbmsiPlZpc3VhbCBTdHVkaW8gQ29kZTwvYT4pIGlmIHlvdSBsaWtlIHRvIG1vZGlmeSB0aGUgY29kZS4KCjIuIFlvdSBjYW4gc2VydmUgdGhlIHByb2plY3QgYnkgdXNpbmcgYGBuZyBzZXJ2ZWBgIGZyb20gd2l0aGluIHRoZSBwcm9qZWN0IHBhdGguCgozLiBPcGVuIDxhIGhyZWY9Imh0dHA6Ly9sb2NhbGhvc3Q6NTAwMCIgdGFyZ2V0PSJfYmxhbmsiPmh0dHA6Ly9sb2NhbGhvc3Q6NTAwMDwvYT4sIGFuZCB5b3Ugc2hvdWxkIHNlZSB0aGUgRGVtbyBBcHBsaWNhdGlvbi4gSWYgPGEgaHJlZj0iaHR0cHM6Ly9naXRodWIuY29tL0ROQS1Fdm9sdXRpb25zL0RvY2tlci1SRVNULVRvdXJPcHRpbWl6ZXIvYmxvYi9tYWluL1JFQURNRS5tZCNob3ctdG8tc3RhcnQtam9wdHRvdXJvcHRpbWl6ZXItZG9ja2VyIiB0YXJnZXQ9Il9ibGFuayI+Sk9wdFRvdXJPcHRpbWl6ZXI8L2E+IGlzIG5vdCBydW5uaW5nIGluIHRoZSBiYWNrZ3JvdW5kLCB5b3UgY2FuICoqTk9UKiogc3RhcnQgYW55IE9wdGltaXphdGlvbi4gSG93ZXZlciwgeW91IHNob3VsZCBzZWUgdGhlIHN0YXJ0aW5nIHBhZ2Ugb2YgdGhlIERlbW8gQXBwbGljYXRpb24uIEJ5IGRlZmF1bHQsIHRoZSBUb3VyT3B0aW1pemVyIGlzIGFzc3VtZWQgdG8gYmUgYXZhaWxhYmxlIGF0IDxhIGhyZWY9Imh0dHA6Ly9sb2NhbGhvc3Q6ODA4MSIgdGFyZ2V0PSJfYmxhbmsiPmh0dHA6Ly9sb2NhbGhvc3Q6ODA4MTwvYT4gYW5kIGlzIHN0YXJ0ZWQgd2l0aCB0aGUgImNvcnMiIHByb2ZpbGUuIFlvdSBjYW4gYWRqdXN0IHRoZSBkZWZhdWx0IHNldHRpbmdzIGZvciBob3N0IGFuZCBwb3J0IGluIHRoZSBgYGVudmlyb25tZW50LnRzYGAgZmlsZS4gVGhlIGRlZmF1bHQgcG9ydCwgdGhlIERlbW8gQXBwbGljYXRpb24gaXMgaG9zdGVkLCBpcyBwb3J0IDUwMDAsIHlvdSBjYW4gY2hhbmdlIHRoaXMgYmVoYXZpb3IgaW4gdGhlIGBgYW5ndWxhci5qc29uYGAuCgooUGxlYXNlIGFsc28gcmVhZCB0aGUgPGEgaHJlZj0iaHR0cHM6Ly9hbmd1bGFyLmlvL2NsaS9idWlsZCIgdGFyZ2V0PSJfYmxhbmsiPkFuZ3VsYXIgRG9jdW1lbnRhdGlvbjwvYT4gdG8gZ2V0IGZ1cnRoZXIgaGVscCBvbiBob3cgdG8gYnVpbGQgcHJvamVjdHMuKQoKCi0tLQojIyBVcGRhdGUvR2VuZXJhdGUgdGhlIFR5cGVTY3JpcHQgbW9kZWxzIHVzaW5nIE9wZW5BcGkgR2VuZXJhdG9yCgpJZiB5b3Ugd291bGQgbGlrZSB0byBhdXRvbWF0aWNhbGx5IGdlbmVyYXRlIHRoZSBtb2RlbHMgYmFzZWQgb24gdGhlIDxhIGhyZWY9Imh0dHBzOi8vc3dhZ2dlci5kbmEtZXZvbHV0aW9ucy5jb20vdjMvYXBpLWRvY3MiIHRhcmdldD0iX2JsYW5rIj5sYXRlc3QgU3dhZ2dlciBBUEktRG9jczwvYT4gb2YgdGhlCjxhIGhyZWY9Imh0dHBzOi8vZ2l0aHViLmNvbS9ETkEtRXZvbHV0aW9ucy9Eb2NrZXItUkVTVC1Ub3VyT3B0aW1pemVyIiB0YXJnZXQ9Il9ibGFuayI+VG91ck9wdGltaXplcjwvYT4sIHlvdSB3aWxsIGhhdmUgdG8gaW5zdGFsbCA8YSBocmVmPSJodHRwczovL3d3dy5ucG1qcy5jb20vcGFja2FnZS9Ab3BlbmFwaXRvb2xzL29wZW5hcGktZ2VuZXJhdG9yLWNsaSIgdGFyZ2V0PSJfYmxhbmsiPk9wZW5hcGktR2VuZXJhdG9yLUNMSTwvYT4uCgpOb3RlOiBPcGVuQXBpR2VuZXJhdG9yIGNhbiBhbHNvIGJlIHJ1biBhcyBEb2NrZXIgY29udGFpbmVyIG9yIE1hdmVuIGRlcGVkZW5jeS4KCiMjIyBDcmVhdGUgYSB0b3Vyb3B0aW1pemVyX3NwZWMuanNvbiBmaWxlClRoZSBgYHRvdXJvcHRpbWl6ZXJfc3BlYy5qc29uYGAgY29udGFpbmluZyB0aGUgQVBJLURvY3MgaXMgbm90IHBhcnQgb2YgdGhpcyByZXBvc2l0b3J5LiBDb3B5IGFuZCBwYXN0ZSB0aGUgU3dhZ2dlciBkZWZpbml0aW9uIHVuZGVyIDxhIGhyZWY9Imh0dHBzOi8vc3dhZ2dlci5kbmEtZXZvbHV0aW9ucy5jb20vdjMvYXBpLWRvY3MiIHRhcmdldD0iX2JsYW5rIj5zd2FnZ2VyLmRuYS1ldm9sdXRpb25zLmNvbS92My9hcGktZG9jczwvYT4gKG9yIGZyb20gPGEgaHJlZj0iaHR0cDovL2xvY2FsaG9zdDo4MDgxL3YzL2FwaS1kb2NzIiB0YXJnZXQ9Il9ibGFuayI+aHR0cDovL2xvY2FsaG9zdDo4MDgxL3YzL2FwaS1kb2NzPC9hPiBvciA8YSBocmVmPSJodHRwczovL2dpdGh1Yi5jb20vRE5BLUV2b2x1dGlvbnMvSmF2YS1SRVNULUNsaWVudC1FeGFtcGxlcy90cmVlL21hc3Rlci9zcmMvbWFpbi9yZXNvdXJjZXMvc3dhZ2dlci90b3Vyb3B0aW1pemVyL3NwZWMvdG91cm9wdGltaXplcl9zcGVjLmpzb24iIHRhcmdldD0iX2JsYW5rIj5HaXRIdWI8L2E+KSBpbnRvIGEgbmV3IGZpbGUgY2FsbGVkIGBgdG91cm9wdGltaXplcl9zcGVjLmpzb25gYC4KCioqVXBkYXRlIEp1bmUgMjAyMToqKgoKTmF0aXZlIEpTT04gaXMgYWxzbyBzdXBwb3J0ZWQgZnJvbSBub3cgb24uCgojIyMgTWFrZSB0aGUgdG91cm9wdGltaXplcl9zcGVjLmpzb24gYXZhaWxhYmxlCgpXaXRoaW4gdGhlIGZpbGUgYGBwYWNrYWdlLmpzb25gYCBvZiB0aGUgRGVtby1BcHBsaWNhdGlvbiBwcm9qZWN0LCB0aGUgc2NyaXB0IGBgbnBtIHJ1biBnZW5lcmF0ZTphcGlgYCBpcyBkZWZpbmVkLiBJdCBleHBlY3RzIHRoZSBgYHRvdXJvcHRpbWl6ZXJfc3BlYy5qc29uYGAgdG8gYmUgc2F2ZWQgYXQgYGAuLi9vcGVuYXBpL3RvdXJvcHRpbWl6ZXJfc3BlYy5qc29uYGAuIE1lYW5pbmcsIHlvdSB3aWxsIGhhdmUgdG8gY3JlYXRlIGEgbmV3IGZvbGRlciBjYWxsZWQgYGBvcGVuYXBpYGAgbmV4dCB0byB5b3VyIHByb2plY3QgZm9sZGVyIChOT1QgaW5zaWRlIHRoZSBwcm9qZWN0IGZvbGRlciBpdHNlbGYpIGFuZCBzYXZlIHlvdXIgYGB0b3Vyb3B0aW1pemVyX3NwZWMuanNvbmBgIGluc2lkZSB0aGUgYGBvcGVuYXBpYGAgZm9sZGVyLgoKSWYgdGhpcyBpcyBkb25lLCB5b3UgY2FuIGNhbGw6CgpgYGB4bWwKbnBtIHJ1biBnZW5lcmF0ZTphcGkKYGBgCgp0byB1cGRhdGUvZ2VuZXJhdGUgdGhlIFR5cGVTY3JpcHQgbW9kZWxzLgoKLS0tCgojIyBWaWRlbyAtIEhvdyB0byB1c2UgdGhlIERlbW8tQXBwbGljYXRpb24KCkNsaWNrIHRvIG9wZW4gdmlkZW86Cgo8YSBocmVmPSJodHRwczovL3d3dy55b3V0dWJlLmNvbS93YXRjaD92PTJxN2NZWUFyS204ICIgdGFyZ2V0PSJfYmxhbmsiPjxpbWcgc3JjPSJodHRwczovL2ltZy55b3V0dWJlLmNvbS92aS8ycTdjWVlBckttOC9tYXhyZXNkZWZhdWx0LmpwZyIgd2lkdGg9IjUwMCIKdGl0bGU9IlR1dG9yaWFsIC0gSG93IHRvIHVzZSB0aGUgRGVtby1BcHBsaWNhdGlvbiIgYWx0PSJUdXRvcmlhbCAtIEhvdyB0byB1c2UgdGhlIERlbW8tQXBwbGljYXRpb24iPjwvYT4KLS0tCgojIyBXaGF0J3MgbmV4dD8KCldlIGFyZSBnb2luZyB0byBwdWJsaXNoIHNvbWUgdHV0b3JpYWxzIG9uICJob3cgdG8gY3JlYXRlIHlvdXIgb3duIGV4YW1wbGVzIi4gRnVydGhlciwgd2UgYXJlIGdvaW5nIHRvIGdpdmUgc29tZSBtb3JlIGluc2lkZXMgb24gdGhlIHN0cnVjdHVyZSBvZiB0aGUgRGVtby1BcHBsaWNhdGlvbi4KCi0tLQoKIyMgVE9ETydzCgoqIEltcHJvdmUgaW4tY29kZSBkb2N1bWVudGF0aW9uLgoKLS0tCgojIyBBZ3JlZW1lbnQKRm9yIHJlYWRpbmcgb3VyIGxpY2Vuc2UgYWdyZWVtZW50IGFuZCBmb3IgZnVydGhlciBpbmZvcm1hdGlvbiBhYm91dCBsaWNlbnNlIHBsYW5zLCBwbGVhc2UgdmlzaXQgPGEgaHJlZj0iaHR0cHM6Ly93d3cuZG5hLWV2b2x1dGlvbnMuY29tIiB0YXJnZXQ9Il9ibGFuayI+d3d3LmRuYS1ldm9sdXRpb25zLmNvbTwvYT4uCgotLS0gCgojIyBBdXRob3JzCkEgcHJvZHVjdCBieSBbZG5hLWV2b2x1dGlvbnMgXShodHRwczovL3d3dy5kbmEtZXZvbHV0aW9ucy5jb20pJmNvcHk7Cgo= - readmeEtag: '"8be294fae51762c49deb33b49a5779fdb3f9e3f10d407a506539282d71b92ca9"' - readmeLastModified: Wed, 07 Feb 2024 14:29:12 GMT + IyBUb3VyT3B0aW1pemVyIEFuZ3VsYXIgRGVtbyBBcHBsaWNhdGlvbiAtIFNvdXJjZQoKPGEgaHJlZj0iaHR0cHM6Ly9kbmEtZXZvbHV0aW9ucy5jb20vIiB0YXJnZXQ9Il9ibGFuayI+PGltZyBzcmM9Imh0dHBzOi8vZG9jcy5kbmEtZXZvbHV0aW9ucy5jb20vaW5kZXhyZXMvZG5hLXRlbXAtbG9nby5wbmciIHdpZHRoPSIxMTAiCnRpdGxlPSJETkEtRXZvbHV0aW9ucyIgYWx0PSJETkEtRXZvbHV0aW9ucyI+PC9hPgoKVG8gdXRpbGl6ZSA8YSBocmVmPSJodHRwczovL2dpdGh1Yi5jb20vRE5BLUV2b2x1dGlvbnMvRG9ja2VyLVJFU1QtVG91ck9wdGltaXplci9ibG9iL21haW4vUkVBRE1FLm1kI2hvdy10by1zdGFydC1qb3B0dG91cm9wdGltaXplci1kb2NrZXIiIHRhcmdldD0iX2JsYW5rIj5KT3B0VG91ck9wdGltaXplci1Eb2NrZXI8L2E+LCB3ZSBjcmVhdGVkIGFuIEFuZ3VsYXItRGVtbyBhcHBsaWNhdGlvbi4gVGhpcyBkZW1vIGFwcGxpY2F0aW9uIGlzIGhvc3RlZCBvbiA8YSBocmVmPSJodHRwczovL2F6dXJlLm1pY3Jvc29mdC5jb20vIiB0YXJnZXQ9Il9ibGFuayI+TWljcm9zb2Z0IEF6dXJlPC9hPiBhbmQgaXMgbWFkZSBhdmFpbGFibGUgdmlhIDxhIGhyZWY9Imh0dHBzOi8vZGVtby5kbmEtZXZvbHV0aW9ucy5jb20vIiB0YXJnZXQ9Il9ibGFuayI+aHR0cHM6Ly9kZW1vLmRuYS1ldm9sdXRpb25zLmNvbTwvYT4uIEhlcmUgd2Ugd291bGQgbGlrZSB0byBzaGFyZSB0aGUgbGF0ZXN0IHNvdXJjZS1jb2RlIG9mIHRoaXMgcHJvamVjdC4gVGhpcyBpcyBub3QgYSBjbGFzc2ljYWwgIkhlbGxvIFdvcmxkIiBwcm9qZWN0LCBhcyBpdCBpcyB1c2luZyBtdWx0aXBsZSBkZXBlbmRlbmNpZXMgYW5kIGFkdmFuY2VkIGNvbmNlcHRzLiBIb3dldmVyLCBmZWVsIGZyZWUgdG8gZXhwbG9yZSB0aGUgcHJvamVjdCBhbmQgZXh0cmFjdCB3aGF0ZXZlciB5b3UgbmVlZCB0byBnZXQgc3RhcnRlZCB3aXRoIEpPcHQuCgoqKlVwZGF0ZSBKdWx5IDEydGggMjAyNDoqKgoKRnJvbSBub3cgb24sIHRoZSBBbmd1bGFyIERlbW8gdXNlcyBBbmd1bGFyIDE4LiBXZSBhbHNvIHVwZGF0ZWQvdXBncmFkZWQgbXVsdGlwbGUgb3RoZXIgZGVwZW5kZW5jaWVzLiBUaGUgZ2VuZXJhdGVkIG1vZGVscyBhcmUgdXNpbmcgSk9wdC5Ub3VyT3B0aW1pemVyIHdpdGggKip2ZXJzaW9uIDEuMi43IG9yIGhpZ2hlcioqLgoKKipVcGRhdGUgSmFudWFyeSA3dGggMjAyNDoqKgoKRnJvbSBub3cgb24sIHRoZSBBbmd1bGFyIERlbW8gdXNlcyBBbmd1bGFyIDE3LiBXZSBhbHNvIHVwZGF0ZWQvdXBncmFkZWQgbXVsdGlwbGUgb3RoZXIgZGVwZW5kZW5jaWVzLiBUaGUgZ2VuZXJhdGVkIG1vZGVscyBhcmUgdXNpbmcgSk9wdC5Ub3VyT3B0aW1pemVyIHdpdGggKip2ZXJzaW9uIDEuMi42IG9yIGhpZ2hlcioqLiBJbiBhZGRpdGlvbiwgYSAiZnJlZSBtb3ZpbmcgZXhhbXBsZSIgd2FzIGFkZGVkLiBOb2RlcyBhbmQgUmVzb3VyY2VzIGNhbiBiZSBmcmVlbHkgcG9zaXRpb25lZCB2aWEgZHJhZyBhbmQgZHJvcC4KCioqVXBkYXRlIEp1bmUgOHRoIDIwMjE6KioKCkZyb20gbm93IG9uLCB0aGUgQW5ndWxhciBEZW1vIHVzZXMgb3VyIG5ldyBzd2FnZ2VyIGRlZmluaXRpb24gKHNlZSAKPGEgaHJlZj0iaHR0cHM6Ly9zd2FnZ2VyLmRuYS1ldm9sdXRpb25zLmNvbS92My9hcGktZG9jcy9PcHRpbWl6ZSIgdGFyZ2V0PSJfYmxhbmsiPnN3YWdnZXIuZG5hLWV2b2x1dGlvbnMuY29tL3YzL2FwaS1kb2NzL09wdGltaXplPC9hPikuIFRoaXMgcmVxdWlyZXMgdXNpbmcgSk9wdC5Ub3VyT3B0aW1pemVyIHdpdGggKip2ZXJzaW9uIDEuMC4zIG9yIGhpZ2hlcioqLiBUaGlzIHN3YWdnZXIgZGVmaW5pdGlvbiBoYXMgdGhlIGFkdmFudGFnZSB0aGF0IGl0IGVuYWJsZXMgYWxtb3N0IGFsbCBmZWF0dXJlcyBvZiBKT3B0IGF0IHRoZSBSRVNULWVuZHBvaW50LgoKKipVcGRhdGUgMjFzdCBTZXB0ZW1iZXIgMjAyMToqKgpUaGUgcmVwbGFjZW1lbnQgZGVzY3JpYmVkIGluICpVcGRhdGUgSnVuZSAyMDIxKiBpcyBubyBsb25nZXIgbmVjZXNzYXJ5LiBIb3dldmVyLCBtb2RlbHMgYWxyZWFkeSBjcmVhdGVkIG5lZWQgdG8gYmUgcmVjcmVhdGVkLiBGdXJ0aGVyLCB0aGUgbGVnYWN5IGVuZHBvaW50IGlzIGRyb3BwZWQsIGFuZCB0aGUgbWFpbi1lbmRwb2ludCBjaGFuZ2VkIHRvIDxhIGhyZWY9Imh0dHBzOi8vc3dhZ2dlci5kbmEtZXZvbHV0aW9ucy5jb20vdjMvYXBpLWRvY3MvT3B0aW1pemUiIHRhcmdldD0iX2JsYW5rIj5zd2FnZ2VyLmRuYS1ldm9sdXRpb25zLmNvbS92My9hcGktZG9jcy9PcHRpbWl6ZTwvYT4uCgotLS0KCiMgQ29udGFjdAoKSWYgeW91IG5lZWQgYW55IGhlbHAsIHBsZWFzZSBjb250YWN0IHVzIHZpYSBvdXIgY29tcGFueSB3ZWJzaXRlIDxhIGhyZWY9Imh0dHBzOi8vd3d3LmRuYS1ldm9sdXRpb25zLmNvbSIgdGFyZ2V0PSJfYmxhbmsiPnd3dy5kbmEtZXZvbHV0aW9ucy5jb208L2E+IG9yIHdyaXRlIGFuIGVtYWlsIHRvIDxhIGhyZWY9Im1haWx0bzppbmZvQGRuYS1ldm9sdXRpb25zLmNvbSI+aW5mb0BkbmEtZXZvbHV0aW9ucy5jb208L2E+LgoKLS0tCgojIyBGdXJ0aGVyIERvY3VtZW50YXRpb24gYW5kIGhlbHBmdWwgTGlua3MKCk91ciBjb250ZW50OgotIEZ1cnRoZXIgZG9jdW1lbnRhdGlvbiAtIDxhIGhyZWY9Imh0dHBzOi8vZG9jcy5kbmEtZXZvbHV0aW9ucy5jb20iIHRhcmdldD0iX2JsYW5rIj5kb2NzLmRuYS1ldm9sdXRpb25zLmNvbTwvYT4KLSBTcGVjaWFsIGZlYXR1cmVzCS0gPGEgaHJlZj0iaHR0cHM6Ly9kb2NzLmRuYS1ldm9sdXRpb25zLmNvbS9vdmVydmlld19kb2NzL3NwZWNpYWxfZmVhdHVyZXMvU3BlY2lhbF9GZWF0dXJlcy5odG1sIiB0YXJnZXQ9Il9ibGFuayI+T3ZlcnZpZXcgb2Ygc3BlY2lhbCBmZWF0dXJlczwvYT4KLSBPdXIgY29tcGFueSB3ZWJzaXRlIC0gPGEgaHJlZj0iaHR0cHM6Ly93d3cuZG5hLWV2b2x1dGlvbnMuY29tIiB0YXJnZXQ9Il9ibGFuayI+d3d3LmRuYS1ldm9sdXRpb25zLmNvbTwvYT4KLSBPdXIgb2ZmaWNpYWwgcmVwb3NpdG9yeSAtIDxhIGhyZWY9Imh0dHBzOi8vcHVibGljLnJlcG8uZG5hLWV2b2x1dGlvbnMuY29tIiB0YXJnZXQ9Il9ibGFuayI+cHVibGljLnJlcG8uZG5hLWV2b2x1dGlvbnMuY29tPC9hPgotIE91ciBvZmZpY2lhbCBKYXZhRG9jcyAtIDxhIGhyZWY9Imh0dHBzOi8vcHVibGljLmphdmFkb2MuZG5hLWV2b2x1dGlvbnMuY29tIiB0YXJnZXQ9Il9ibGFuayI+cHVibGljLmphdmFkb2MuZG5hLWV2b2x1dGlvbnMuY29tPC9hPgotIE91ciBZb3VUdWJlIGNoYW5uZWwgLSA8YSBocmVmPSJodHRwczovL3d3dy55b3V0dWJlLmNvbS9jaGFubmVsL1VDemZaakpMcDVScms3VTJVS3NPZjhGdyIgdGFyZ2V0PSJfYmxhbmsiPkROQSBUdXRvcmlhbHM8L2E+Ci0gT3VyIERvY2tlckh1YiBjaGFubmVsIC0gPGEgaHJlZj0iaHR0cHM6Ly9odWIuZG9ja2VyLmNvbS91L2RuYWV2b2x1dGlvbnMiIHRhcmdldD0iX2JsYW5rIj5ETkEgRG9ja2VySHViPC9hPgotIE91ciBMaW5rZWRJbiBjaGFubmVsIC0gPGEgaHJlZj0iaHR0cHM6Ly93d3cubGlua2VkaW4uY29tL2NvbXBhbnkvZG5hLWV2b2x1dGlvbnMvIiB0YXJnZXQ9Il9ibGFuayI+RE5BIExpbmtlZEluPC9hPgoKVGhpcmQtcGFydHk6Ci0gPGEgaHJlZj0iaHR0cHM6Ly9hbmd1bGFyLmlvL2NsaSIgdGFyZ2V0PSJfYmxhbmsiPkFuZ3VsYXIgQ0xJPC9hPgotIDxhIGhyZWY9Imh0dHBzOi8vd3d3Lm5wbWpzLmNvbS9wYWNrYWdlL0BvcGVuYXBpdG9vbHMvb3BlbmFwaS1nZW5lcmF0b3ItY2xpIiB0YXJnZXQ9Il9ibGFuayI+T3BlbiBBcGkgR2VuZXJhdG9yPC9hPgotIDxhIGhyZWY9Imh0dHBzOi8vd3d3Lm1va2thcHBzLmRlL2Jsb2cvaG93LXRvLWdlbmVyYXRlLWFuZ3VsYXItYW5kLXNwcmluZy1jb2RlLWZyb20tb3Blbi1hcGktc3BlY2lmaWNhdGlvbi8iIHRhcmdldD0iX2JsYW5rIj5HZW5lcmF0ZSBBbmd1bGFyIGFuZCBTcHJpbmcgY29kZSBmcm9tIE9wZW5BcGk8L2E+Ci0gPGEgaHJlZj0iaHR0cHM6Ly9tYXRlcmlhbC5hbmd1bGFyLmlvLyIgdGFyZ2V0PSJfYmxhbmsiPkFuZ3VsYXIgTWF0ZXJpYWw8L2E+CgotLS0KCiMjIE92ZXJ2aWV3CgoqIFtHZW5lcmFsIC0gRE5BIERlbW8gQXBwbGljYXRpb25dKCNnZW5lcmFsLWRuYS1kZW1vLWFwcGxpY2F0aW9uKQoqIFtTZXJ2ZSB3aXRoIERvY2tlciAocmVjb21tZW5kZWQpXSgjc2VydmUtd2l0aC1kb2NrZXItcmVjb21tZW5kZWQpCiogW1NlcnZlIHdpdGhvdXQgRG9ja2VyXSgjc2VydmUtd2l0aG91dC1kb2NrZXIpCiogW1VwZGF0ZS9HZW5lcmF0ZSB0aGUgdHlwZXNjcmlwdCBtb2RlbHMgdXNpbmcgT3BlbkFwaSBHZW5lcmF0b3JdKCN1cGRhdGUtZ2VuZXJhdGUtdGhlLXR5cGVzY3JpcHQtbW9kZWxzLXVzaW5nLW9wZW5hcGktZ2VuZXJhdG9yKQoqIFtWaWRlbyAtIEhvdyB0byB1c2UgdGhlIERlbW8tQXBwbGljYXRpb25dKCN2aWRlby1ob3ctdG8tdXNlLXRoZS1kZW1vLWFwcGxpY2F0aW9uKQoqIFtXaGF0J3MgbmV4dD9dKCN3aGF0LXMtbmV4dCkKCi0tLQoKIyMgR2VuZXJhbCAtIEROQSBEZW1vIEFwcGxpY2F0aW9uCgpUaGUgYW5ndWxhci1kZW1vIGFwcGxpY2F0aW9uIHdhcyBnZW5lcmF0ZWQgd2l0aCA8YSBocmVmPSJodHRwczovL2dpdGh1Yi5jb20vYW5ndWxhci9hbmd1bGFyLWNsaSIgdGFyZ2V0PSJfYmxhbmsiPkFuZ3VsYXIgQ0xJPC9hPi4gRnVydGhlciwgd2UgdXRpbGl6ZWQgPGEgaHJlZj0iaHR0cHM6Ly9naXRodWIuY29tL09wZW5BUElUb29scy9vcGVuYXBpLWdlbmVyYXRvciIgdGFyZ2V0PSJfYmxhbmsiPk9wZW5BcGkgR2VuZXJhdG9yPC9hPiB0byBhdXRvbWF0aWNhbGx5IGNyZWF0ZSB0aGUgcmVxdWlyZWQgVHlwZVNjcmlwdCBtb2RlbHMgZnJvbSB0aGUgT3BlbkFwaSBkZWZpbml0aW9uIHByb3ZpZGVkIGZyb20gb3VyIFN3YWdnZXIgZW5kcG9pbnQgb2YgSk9wdFRvdXJPcHRpbWl6ZXIuCgo8aW1nIHNyYz0iaHR0cHM6Ly9kbmEtZXZvbHV0aW9ucy5jb20vd3AtY29udGVudC91cGxvYWRzLzIwMjAvMTEvaG93LXRvLXZpZGVvLXByZXYuZ2lmIiB3aWR0aD0iNDUwIgp0aXRsZT0iRE5BLUV2b2x1dGlvbnMgRGVtbyBBcHBsaWNhdGlvbiBQcmV2aWV3IiBhbHQ9IkROQS1Fdm9sdXRpb25zIERlbW8gQXBwbGljYXRpb24gUHJldmlldyI+CgotLS0KCiMjIFNlcnZlIHdpdGggRG9ja2VyIChyZWNvbW1lbmRlZCkKCldlIHJlY29tbWVuZCBzZXJ2aW5nIHRoZSBEZW1vIEFwcGxpY2F0aW9uIHdpdGggZG9ja2VyLCBlc3BlY2lhbGx5IHdoZW4geW91IGFyZSBuZXcgdG8gQW5ndWxhci4gVGhlIGRvY2tlciBidWlsZCB3aWxsIGluc3RhbGwgYWxsIHRoZSByZXF1aXJlZCBkZXBlbmRlbmNpZXMgZm9yIHlvdS4gWW91IGNhbiBtb2RpZnkgdGhlIGNvZGUgaW4geW91ciBkZXNpcmVkIElERSBhbmQgYnVpbGQgeW91ciBjdXN0b20gaW1hZ2UuCgojIyMgUHJlcmVxdWlzaXRlcwoKMSkgSW5zdGFsbCBhIERvY2tlciBlbnZpcm9ubWVudCBhbmQgbWFrZSBzdXJlIGBgZG9ja2VyYGAgaXMgYXZhaWxhYmxlIGluIHlvdXIgY29tbWFuZCBsaW5lLgoKMikgRXZlbiB0aG91Z2ggdGhlIERlbW8tQXBwbGljYXRpb24gbmVlZHMgbm8gVG91ck9wdGltaXplciB0byBzdGFydCwgeW91IG5lZWQgdG8gcHJvdmlkZSBhIHJ1bm5pbmcgVG91ck9wdGltaXplciBpbnN0YW5jZSB0byB0ZXN0IHRoZSBmdWxsIGZ1bmN0aW9uYWxpdHkgb2YgdGhlIERlbW8tQXBwbGljYXRpb24uIFBsZWFzZSByZWFkIHRoZSBkb2N1bWVudGF0aW9uIG9uIGhvdyB0byA8YSBocmVmPSJodHRwczovL2dpdGh1Yi5jb20vRE5BLUV2b2x1dGlvbnMvRG9ja2VyLVJFU1QtVG91ck9wdGltaXplci9ibG9iL21haW4vUkVBRE1FLm1kI2hvdy10by1zdGFydC1qb3B0dG91cm9wdGltaXplci1kb2NrZXIiIHRhcmdldD0iX2JsYW5rIj5zdGFydCB0aGUgVG91ck9wdGltaXplcjwvYT4uCgoKIyMjIFN0YXJ0IHRoZSBpbWFnZQoKUGxlYXNlIHZpc2l0IDxhIGhyZWY9Imh0dHBzOi8vaHViLmRvY2tlci5jb20vcmVwb3NpdG9yeS9kb2NrZXIvZG5hZXZvbHV0aW9ucy9qb3B0X2RlbW9hcHBsaWNhdGlvbi9nZW5lcmFsIiB0YXJnZXQ9Il9ibGFuayI+aHR0cHM6Ly9odWIuZG9ja2VyLmNvbS9yZXBvc2l0b3J5L2RvY2tlci9kbmFldm9sdXRpb25zL2pvcHRfZGVtb2FwcGxpY2F0aW9uL2dlbmVyYWw8L2E+IGFuZCBmb2xsb3cgdGhlIGluc3RydWN0aW9ucyBpZiB5b3Ugd2FudCB0byBzdGFydCB0aGUgcHJlLWJ1aWx0IGltYWdlIHdpdGhvdXQgdXNpbmcgdGhlIHNvdXJjZXMuIAoKIyMjIEJ1aWxkIHRoZSBpbWFnZSBmcm9tIHNjcmF0Y2gKCjEpIENsb25lIHRoaXMgcmVwb3NpdG9yeSBhbmQgb3BlbiBpdCBpbiB5b3VyIGRlc2lyZWQgSURFIChlLmcuIDxhIGhyZWY9Imh0dHBzOi8vY29kZS52aXN1YWxzdHVkaW8uY29tLyIgdGFyZ2V0PSJfYmxhbmsiPlZpc3VhbCBTdHVkaW8gQ29kZTwvYT4pIGFuZCBtb2RpZnkgdGhlIGNvZGUgaWYgeW91IGxpa2UuCjIpIDxhIGhyZWY9Imh0dHBzOi8vZG9jcy5kb2NrZXIuY29tL2VuZ2luZS9yZWZlcmVuY2UvY29tbWFuZGxpbmUvYnVpbGQvIiB0YXJnZXQ9Il9ibGFuayI+QnVpbGQ8L2E+IHRoZSBkb2NrZXIgaW1hZ2UgdXNpbmcgdGhlIGBgRG9ja2VyZmlsZWBgIGluIHRoZSBtYWluIHByb2plY3QgcGF0aCwgYnkgcnVubmluZzoKCkFUVEVOVElPTjogTm9kZS5qcyBkdXJpbmcgdGhlIGJ1aWxkIHByb2Nlc3MgY2FuIGJlIHF1aXRlIG1lbW9yeSBjb25zdW1pbmcuIFNvIG1ha2Ugc3VyZSB5b3VyIGRvY2tlciBlbnZpcm9ubWVudCBoYXMgYXQgbGVhc3QgNCBHQiBvZiBSYW0uIAoKYGBgeG1sCmRvY2tlciBidWlsZCAtdCBkbmFfY3VzdG9tX2RlbW9faW1hZ2UgLgpgYGAKCiMjIyBSdW4gYSBjb250YWluZXIKCjEpIFJ1biB0aGUgaW1hZ2UgYmFzZWQgb24geW91ciBmcmVzaGx5IGNyZWF0ZWQgaW1hZ2U6CgpgYGB4bWwKZG9ja2VyIHJ1biAtZCAtLXJtIFwKCS0tbmFtZSBteUpPcHRUb3VyT3B0aW1pemVyRGVtbyBcCgktcCAzMDAwOjgwIFwKCS12ICR7UFdEfTovdXNyL3NyYy9hcHAgXAoJLWUgSk9QVF9TV0FHR0VSX0hPU1Q9Imh0dHA6Ly9sb2NhbGhvc3QiIFwKCS1lIEpPUFRfU1dBR0dFUl9QT1JUPSI4MDgxIiBcCglkbmFfY3VzdG9tX2RlbW9faW1hZ2UKYGBgCgpTYW1lIGNvbW1hbmQgYXMgYSBzaW5nbGUgbGluZToKCmBgYHhtbApkb2NrZXIgcnVuIC1kIC0tcm0gLS1uYW1lIG15Sk9wdFRvdXJPcHRpbWl6ZXJEZW1vIC1wIDMwMDA6ODAgLXYgJHtQV0R9Oi91c3Ivc3JjL2FwcCAtZSBKT1BUX1NXQUdHRVJfSE9TVD0iaHR0cDovL2xvY2FsaG9zdCIgLWUgSk9QVF9TV0FHR0VSX1BPUlQ9IjgwODEiIGRuYV9jdXN0b21fZGVtb19pbWFnZQpgYGAKCk9wZW4gPGEgaHJlZj0iaHR0cDovL2xvY2FsaG9zdDozMDAwIiB0YXJnZXQ9Il9ibGFuayI+aHR0cDovL2xvY2FsaG9zdDozMDAwPC9hPiwgYW5kIHlvdSBzaG91bGQgc2VlIHRoZSBEZW1vIEFwcGxpY2F0aW9uLiBJZiA8YSBocmVmPSJodHRwczovL2dpdGh1Yi5jb20vRE5BLUV2b2x1dGlvbnMvRG9ja2VyLVJFU1QtVG91ck9wdGltaXplci9ibG9iL21haW4vUkVBRE1FLm1kI2hvdy10by1zdGFydC1qb3B0dG91cm9wdGltaXplci1kb2NrZXIiIHRhcmdldD0iX2JsYW5rIj5KT3B0VG91ck9wdGltaXplcjwvYT4gaXMgbm90IHJ1bm5pbmcgaW4gdGhlIGJhY2tncm91bmQsIHlvdSBjYW4gKipOT1QqKiBzdGFydCBhbnkgT3B0aW1pemF0aW9uLiBIb3dldmVyLCB5b3Ugc2hvdWxkIHNlZSB0aGUgc3RhcnRpbmcgcGFnZSBvZiB0aGUgRGVtbyBBcHBsaWNhdGlvbi4gQnkgZGVmYXVsdCwgdGhlIFRvdXJPcHRpbWl6ZXIgaXMgYXNzdW1lZCB0byBiZSBhdmFpbGFibGUgYXQgPGEgaHJlZj0iaHR0cDovL2xvY2FsaG9zdDo4MDgxIiB0YXJnZXQ9Il9ibGFuayI+aHR0cDovL2xvY2FsaG9zdDo4MDgxPC9hPiBhbmQgaXMgc3RhcnRlZCB3aXRoIHRoZSAiY29ycyIgcHJvZmlsZS4gWW91IGNhbiBhZGp1c3QgdGhlIGRlZmF1bHQgc2V0dGluZ3MgZm9yIGhvc3QgYW5kIHBvcnQgaW4gdGhlIGBgZW52aXJvbm1lbnQudHNgYCBmaWxlLgoKWW91IGNhbiBwcm92aWRlIHRocmVlIGVudmlyb25tZW50IHZhcmlhYmxlczoKKiBgYEpPUFRfU1dBR0dFUl9IT1NUYGA6IFRoZSBhZGRyZXNzIG9mIHlvdXIgcnVubmluZyBUb3VyT3B0aW1pemVyLiBJZiB5b3UgcnVuIHRoZSBkb2NrZXIgaW1hZ2Ugb2YgdGhlIFRvdXJPcHRpbWl6ZXIgbG9jYWxseSwgdGhpcyBpcyBgYGh0dHA6Ly9sb2NhbGhvc3RgYC4KKiBgYEpPUFRfU1dBR0dFUl9QT1JUYGA6IFRoZSBwb3J0IG9mIHlvdXIgcnVubmluZyBUb3VyT3B0aW1pemVyLiBJZiB5b3UgcnVuIHRoZSBkb2NrZXIgaW1hZ2Ugb2YgdGhlIFRvdXJPcHRpbWl6ZXIgbG9jYWxseSwgdGhpcyBpcyBgYDgwODFgYC4KKiBgYElOUFJPRFVDVElPTmBgOiBUaGlzIHZhbHVlIGlzIGBgZmFsc2VgYCBieSBkZWZhdWx0LiBJZiB5b3UgYXJlIGNoYW5naW5nIGl0IHRvIGBgdHJ1ZWBgLCBvdXIgb2ZmaWNpYWwgVG91ck9wdGltaXplciBlbmRwb2ludCBpcyB1c2VkIGJ5IGRlZmF1bHQuIEhvd2V2ZXIsICoqdHJ5IHRvIGF2b2lkIHRoaXMqKiwgYXMgd2UgYXJlIGdvaW5nIHRvIGJsb2NrIElQcyB3aXRoIHRvbyBtYW55IHJlcXVlc3RzLiBGdXJ0aGVyLCBvdXIgb2ZmaWNpYWwgZW5kcG9pbnQgaGFzIGEgbGltaXRhdGlvbiBvZiAyMCBlbGVtZW50cyB0byBiZSBvcHRpbWl6ZWQsIHJlZ2FyZGxlc3Mgb2YgeW91ciBsaWNlbnNlLiBZb3UgY2FuIGNoYW5nZSB0aGUgcHJvZHVjdGlvbiBlbnZpcm9ubWVudCBzZXR0aW5ncyBieSBlZGl0aW5nIHRoZSBmaWxlOiBgYGVudmlyb25tZW50LnByb2QudHNgYC4KCgotLS0KCiMjIFNlcnZlIHdpdGhvdXQgRG9ja2VyCgpPZiBjb3Vyc2UsIHlvdSBjYW4gaG9zdCB0aGUgRGVtby1BcHBsaWNhdGlvbiBBbmd1bGFyIFByb2plY3QgbG9jYWxseSB3aXRob3V0IHVzaW5nIGRvY2tlci4gSG93ZXZlciwgeW91IGhhdmUgdG8gbWFrZSBzdXJlIHlvdXIgZW52aXJvbm1lbnQgaXMgc2V0IHVwIGNvcnJlY3RseS4KCiMjIyBQcmVyZXF1aXNpdGVzIChmb3IgdXNpbmcgYGBucG1gYCBhbmQgYGBuZ2BgKQoKMSkgRmlyc3QsIHlvdSBuZWVkIHRvIG1ha2Ugc3VyZSA8YSBocmVmPSJodHRwczovL3d3dy5ucG1qcy5jb20vZ2V0LW5wbSIgdGFyZ2V0PSJfYmxhbmsiPm5wbSAoTm9kZSBQYWNrYWdlIE1hbmFnZXIpPC9hPiBpcyBpbnN0YWxsZWQuICAgCgoyKSBGdXJ0aGVyLCB5b3UgbmVlZCB0byBpbnN0YWxsIDxhIGhyZWY9Imh0dHBzOi8vYW5ndWxhci5pby9jbGkiIHRhcmdldD0iX2JsYW5rIj5uZyAoQW5ndWxhciBDTEkpPC9hPgoKMykgRXZlbiB0aG91Z2ggdGhlIERlbW8tQXBwbGljYXRpb24gbmVlZHMgbm8gVG91ck9wdGltaXplciB0byBzdGFydCwgeW91IG5lZWQgdG8gcHJvdmlkZSBhIHJ1bm5pbmcgVG91ck9wdGltaXplciBpbnN0YW5jZSB0byB0ZXN0IHRoZSBmdWxsIGZ1bmN0aW9uYWxpdHkgb2YgdGhlIERlbW8tQXBwbGljYXRpb24uIFBsZWFzZSByZWFkIHRoZSBkb2N1bWVudGF0aW9uIG9uIGhvdyB0byA8YSBocmVmPSJodHRwczovL2dpdGh1Yi5jb20vRE5BLUV2b2x1dGlvbnMvRG9ja2VyLVJFU1QtVG91ck9wdGltaXplci9ibG9iL21haW4vUkVBRE1FLm1kI2hvdy10by1zdGFydC1qb3B0dG91cm9wdGltaXplci1kb2NrZXIiIHRhcmdldD0iX2JsYW5rIj5zdGFydCB0aGUgVG91ck9wdGltaXplcjwvYT4uCgoKIyMjIFNlcnZlIHRoZSBEZW1vIEFwcGxpY2F0aW9uCgoxLiBDbG9uZSB0aGlzIHJlcG9zaXRvcnkgYW5kIG9wZW4gaXQgaW4geW91ciBkZXNpcmVkIElERSAoZS5nLiA8YSBocmVmPSJodHRwczovL2NvZGUudmlzdWFsc3R1ZGlvLmNvbS8iIHRhcmdldD0iX2JsYW5rIj5WaXN1YWwgU3R1ZGlvIENvZGU8L2E+KSBpZiB5b3UgbGlrZSB0byBtb2RpZnkgdGhlIGNvZGUuCgoyLiBZb3UgY2FuIHNlcnZlIHRoZSBwcm9qZWN0IGJ5IHVzaW5nIGBgbmcgc2VydmVgYCBmcm9tIHdpdGhpbiB0aGUgcHJvamVjdCBwYXRoLgoKMy4gT3BlbiA8YSBocmVmPSJodHRwOi8vbG9jYWxob3N0OjUwMDAiIHRhcmdldD0iX2JsYW5rIj5odHRwOi8vbG9jYWxob3N0OjUwMDA8L2E+LCBhbmQgeW91IHNob3VsZCBzZWUgdGhlIERlbW8gQXBwbGljYXRpb24uIElmIDxhIGhyZWY9Imh0dHBzOi8vZ2l0aHViLmNvbS9ETkEtRXZvbHV0aW9ucy9Eb2NrZXItUkVTVC1Ub3VyT3B0aW1pemVyL2Jsb2IvbWFpbi9SRUFETUUubWQjaG93LXRvLXN0YXJ0LWpvcHR0b3Vyb3B0aW1pemVyLWRvY2tlciIgdGFyZ2V0PSJfYmxhbmsiPkpPcHRUb3VyT3B0aW1pemVyPC9hPiBpcyBub3QgcnVubmluZyBpbiB0aGUgYmFja2dyb3VuZCwgeW91IGNhbiAqKk5PVCoqIHN0YXJ0IGFueSBPcHRpbWl6YXRpb24uIEhvd2V2ZXIsIHlvdSBzaG91bGQgc2VlIHRoZSBzdGFydGluZyBwYWdlIG9mIHRoZSBEZW1vIEFwcGxpY2F0aW9uLiBCeSBkZWZhdWx0LCB0aGUgVG91ck9wdGltaXplciBpcyBhc3N1bWVkIHRvIGJlIGF2YWlsYWJsZSBhdCA8YSBocmVmPSJodHRwOi8vbG9jYWxob3N0OjgwODEiIHRhcmdldD0iX2JsYW5rIj5odHRwOi8vbG9jYWxob3N0OjgwODE8L2E+IGFuZCBpcyBzdGFydGVkIHdpdGggdGhlICJjb3JzIiBwcm9maWxlLiBZb3UgY2FuIGFkanVzdCB0aGUgZGVmYXVsdCBzZXR0aW5ncyBmb3IgaG9zdCBhbmQgcG9ydCBpbiB0aGUgYGBlbnZpcm9ubWVudC50c2BgIGZpbGUuIFRoZSBkZWZhdWx0IHBvcnQsIHRoZSBEZW1vIEFwcGxpY2F0aW9uIGlzIGhvc3RlZCwgaXMgcG9ydCA1MDAwLCB5b3UgY2FuIGNoYW5nZSB0aGlzIGJlaGF2aW9yIGluIHRoZSBgYGFuZ3VsYXIuanNvbmBgLgoKKFBsZWFzZSBhbHNvIHJlYWQgdGhlIDxhIGhyZWY9Imh0dHBzOi8vYW5ndWxhci5pby9jbGkvYnVpbGQiIHRhcmdldD0iX2JsYW5rIj5Bbmd1bGFyIERvY3VtZW50YXRpb248L2E+IHRvIGdldCBmdXJ0aGVyIGhlbHAgb24gaG93IHRvIGJ1aWxkIHByb2plY3RzLikKCgotLS0KIyMgVXBkYXRlL0dlbmVyYXRlIHRoZSBUeXBlU2NyaXB0IG1vZGVscyB1c2luZyBPcGVuQXBpIEdlbmVyYXRvcgoKSWYgeW91IHdvdWxkIGxpa2UgdG8gYXV0b21hdGljYWxseSBnZW5lcmF0ZSB0aGUgbW9kZWxzIGJhc2VkIG9uIHRoZSA8YSBocmVmPSJodHRwczovL3N3YWdnZXIuZG5hLWV2b2x1dGlvbnMuY29tL3YzL2FwaS1kb2NzIiB0YXJnZXQ9Il9ibGFuayI+bGF0ZXN0IFN3YWdnZXIgQVBJLURvY3M8L2E+IG9mIHRoZQo8YSBocmVmPSJodHRwczovL2dpdGh1Yi5jb20vRE5BLUV2b2x1dGlvbnMvRG9ja2VyLVJFU1QtVG91ck9wdGltaXplciIgdGFyZ2V0PSJfYmxhbmsiPlRvdXJPcHRpbWl6ZXI8L2E+LCB5b3Ugd2lsbCBoYXZlIHRvIGluc3RhbGwgPGEgaHJlZj0iaHR0cHM6Ly93d3cubnBtanMuY29tL3BhY2thZ2UvQG9wZW5hcGl0b29scy9vcGVuYXBpLWdlbmVyYXRvci1jbGkiIHRhcmdldD0iX2JsYW5rIj5PcGVuYXBpLUdlbmVyYXRvci1DTEk8L2E+LgoKTm90ZTogT3BlbkFwaUdlbmVyYXRvciBjYW4gYWxzbyBiZSBydW4gYXMgRG9ja2VyIGNvbnRhaW5lciBvciBNYXZlbiBkZXBlZGVuY3kuCgojIyMgQ3JlYXRlIGEgdG91cm9wdGltaXplcl9zcGVjLmpzb24gZmlsZQpUaGUgYGB0b3Vyb3B0aW1pemVyX3NwZWMuanNvbmBgIGNvbnRhaW5pbmcgdGhlIEFQSS1Eb2NzIGlzIG5vdCBwYXJ0IG9mIHRoaXMgcmVwb3NpdG9yeS4gQ29weSBhbmQgcGFzdGUgdGhlIFN3YWdnZXIgZGVmaW5pdGlvbiB1bmRlciA8YSBocmVmPSJodHRwczovL3N3YWdnZXIuZG5hLWV2b2x1dGlvbnMuY29tL3YzL2FwaS1kb2NzIiB0YXJnZXQ9Il9ibGFuayI+c3dhZ2dlci5kbmEtZXZvbHV0aW9ucy5jb20vdjMvYXBpLWRvY3M8L2E+IChvciBmcm9tIDxhIGhyZWY9Imh0dHA6Ly9sb2NhbGhvc3Q6ODA4MS92My9hcGktZG9jcyIgdGFyZ2V0PSJfYmxhbmsiPmh0dHA6Ly9sb2NhbGhvc3Q6ODA4MS92My9hcGktZG9jczwvYT4gb3IgPGEgaHJlZj0iaHR0cHM6Ly9naXRodWIuY29tL0ROQS1Fdm9sdXRpb25zL0phdmEtUkVTVC1DbGllbnQtRXhhbXBsZXMvdHJlZS9tYXN0ZXIvc3JjL21haW4vcmVzb3VyY2VzL3N3YWdnZXIvdG91cm9wdGltaXplci9zcGVjL3RvdXJvcHRpbWl6ZXJfc3BlYy5qc29uIiB0YXJnZXQ9Il9ibGFuayI+R2l0SHViPC9hPikgaW50byBhIG5ldyBmaWxlIGNhbGxlZCBgYHRvdXJvcHRpbWl6ZXJfc3BlYy5qc29uYGAuCgoqKlVwZGF0ZSBKdW5lIDIwMjE6KioKCk5hdGl2ZSBKU09OIGlzIGFsc28gc3VwcG9ydGVkIGZyb20gbm93IG9uLgoKIyMjIE1ha2UgdGhlIHRvdXJvcHRpbWl6ZXJfc3BlYy5qc29uIGF2YWlsYWJsZQoKV2l0aGluIHRoZSBmaWxlIGBgcGFja2FnZS5qc29uYGAgb2YgdGhlIERlbW8tQXBwbGljYXRpb24gcHJvamVjdCwgdGhlIHNjcmlwdCBgYG5wbSBydW4gZ2VuZXJhdGU6YXBpYGAgaXMgZGVmaW5lZC4gSXQgZXhwZWN0cyB0aGUgYGB0b3Vyb3B0aW1pemVyX3NwZWMuanNvbmBgIHRvIGJlIHNhdmVkIGF0IGBgLi4vb3BlbmFwaS90b3Vyb3B0aW1pemVyX3NwZWMuanNvbmBgLiBNZWFuaW5nLCB5b3Ugd2lsbCBoYXZlIHRvIGNyZWF0ZSBhIG5ldyBmb2xkZXIgY2FsbGVkIGBgb3BlbmFwaWBgIG5leHQgdG8geW91ciBwcm9qZWN0IGZvbGRlciAoTk9UIGluc2lkZSB0aGUgcHJvamVjdCBmb2xkZXIgaXRzZWxmKSBhbmQgc2F2ZSB5b3VyIGBgdG91cm9wdGltaXplcl9zcGVjLmpzb25gYCBpbnNpZGUgdGhlIGBgb3BlbmFwaWBgIGZvbGRlci4KCklmIHRoaXMgaXMgZG9uZSwgeW91IGNhbiBjYWxsOgoKYGBgeG1sCm5wbSBydW4gZ2VuZXJhdGU6YXBpCmBgYAoKdG8gdXBkYXRlL2dlbmVyYXRlIHRoZSBUeXBlU2NyaXB0IG1vZGVscy4KCi0tLQoKIyMgVmlkZW8gLSBIb3cgdG8gdXNlIHRoZSBEZW1vLUFwcGxpY2F0aW9uCgpDbGljayB0byBvcGVuIHZpZGVvOgoKPGEgaHJlZj0iaHR0cHM6Ly93d3cueW91dHViZS5jb20vd2F0Y2g/dj0ycTdjWVlBckttOCAiIHRhcmdldD0iX2JsYW5rIj48aW1nIHNyYz0iaHR0cHM6Ly9pbWcueW91dHViZS5jb20vdmkvMnE3Y1lZQXJLbTgvbWF4cmVzZGVmYXVsdC5qcGciIHdpZHRoPSI1MDAiCnRpdGxlPSJUdXRvcmlhbCAtIEhvdyB0byB1c2UgdGhlIERlbW8tQXBwbGljYXRpb24iIGFsdD0iVHV0b3JpYWwgLSBIb3cgdG8gdXNlIHRoZSBEZW1vLUFwcGxpY2F0aW9uIj48L2E+Ci0tLQoKIyMgV2hhdCdzIG5leHQ/CgpXZSBhcmUgZ29pbmcgdG8gcHVibGlzaCBzb21lIHR1dG9yaWFscyBvbiAiaG93IHRvIGNyZWF0ZSB5b3VyIG93biBleGFtcGxlcyIuIEZ1cnRoZXIsIHdlIGFyZSBnb2luZyB0byBnaXZlIHNvbWUgbW9yZSBpbnNpZGVzIG9uIHRoZSBzdHJ1Y3R1cmUgb2YgdGhlIERlbW8tQXBwbGljYXRpb24uCgotLS0KCiMjIFRPRE8ncwoKKiBJbXByb3ZlIGluLWNvZGUgZG9jdW1lbnRhdGlvbi4KCi0tLQoKIyMgQWdyZWVtZW50CkZvciByZWFkaW5nIG91ciBsaWNlbnNlIGFncmVlbWVudCBhbmQgZm9yIGZ1cnRoZXIgaW5mb3JtYXRpb24gYWJvdXQgbGljZW5zZSBwbGFucywgcGxlYXNlIHZpc2l0IDxhIGhyZWY9Imh0dHBzOi8vd3d3LmRuYS1ldm9sdXRpb25zLmNvbSIgdGFyZ2V0PSJfYmxhbmsiPnd3dy5kbmEtZXZvbHV0aW9ucy5jb208L2E+LgoKLS0tIAoKIyMgQXV0aG9ycwpBIHByb2R1Y3QgYnkgW2RuYS1ldm9sdXRpb25zIF0oaHR0cHM6Ly93d3cuZG5hLWV2b2x1dGlvbnMuY29tKSZjb3B5OwoK + readmeEtag: '"986d2b68ed59ee51981e1e5b2ee4adc52ae93ac357780b4e08e7d894891baa7b"' + readmeLastModified: Fri, 12 Jul 2024 17:16:06 GMT repositoryId: 340891355 description: The latest source code of our Angular-Demo Application. created: '2021-02-21T12:03:16Z' - updated: '2024-04-03T13:19:18Z' + updated: '2024-07-12T17:21:46Z' language: TypeScript archived: false stars: 4 @@ -19593,8 +19593,8 @@ forks: 2 owner: DNA-Evolutions logo: https://avatars.githubusercontent.com/u/62150493?v=4 - repoEtag: '"044a610cf091b875b9253395d16a1997852e30d58ffe2e5c1227fd8c02f360ba"' - repoLastModified: Wed, 03 Apr 2024 13:19:18 GMT + repoEtag: '"5b7aa6de692461c916920245facabe656a8e5df1368b9c9283431fd8c5b9efaa"' + repoLastModified: Fri, 12 Jul 2024 17:21:46 GMT foundInMaster: true category: Server Implementations id: 32f0648c116dcc86eaec5b5beec2a428 @@ -19615,11 +19615,11 @@ archived: false stars: 4 watchers: 1 - forks: 12 + forks: 13 owner: mohitkumarsahni logo: https://avatars.githubusercontent.com/u/25563097?v=4 license: MIT - repoEtag: '"423a487dc1a1868cea59bab5263576e0234536237de03deaf7844c44b96c6dcd"' + repoEtag: '"71e36fe88e3d448b93e229606dcc480918328e161a6456525a64c7663fe19e4b"' repoLastModified: Sun, 31 Dec 2023 03:17:39 GMT category: - Parsers @@ -20914,7 +20914,7 @@ owner: tsingsun logo: https://avatars.githubusercontent.com/u/5848549?v=4 license: Apache-2.0 - repoEtag: '"e309cd15f3329f7e0448de59b01c8d6ef51cd5093c87583efac2b12e1bb563a7"' + repoEtag: '"c5f72b017ed35cf80fa9bfa2dd467709d72ad207fc088ed830a1fd3057830a94"' repoLastModified: Wed, 19 Jun 2024 03:03:43 GMT category: Server Implementations foundInMaster: true @@ -21019,7 +21019,7 @@ owner: ideal-postcodes logo: https://avatars.githubusercontent.com/u/4996310?v=4 license: MIT - repoEtag: '"e145d0035aa8fc2216ae47e46f45cb60392e30acf541a605b1eb17328488ada6"' + repoEtag: '"1201ece9e82dc16e5f6e1d2378e37bed8eb1392314c2525bb790e918d07e7fdb"' repoLastModified: Wed, 10 Jul 2024 10:03:54 GMT foundInMaster: true category: SDK @@ -21222,23 +21222,23 @@ v3: true repositoryMetadata: base64Readme: >- - PiAjIPCfk6ZUaGlzIHJlcG9zaXRvcnkgaGFzIGJlZW4gYXJjaGl2ZWQuIFlvdSB3aWxsIGZpbmQgTW9ja29vbidzIG5ldyBtb25vcmVwbyBbaGVyZV0oaHR0cHM6Ly9naXRodWIuY29tL21vY2tvb24vbW9ja29vbikuCgo8ZGl2IGFsaWduPSJjZW50ZXIiPgogIDxhIGhyZWY9Imh0dHBzOi8vbW9ja29vbi5jb20iIGFsdD0ibW9ja29vbiBsb2dvIj4KICAgIDxpbWcgd2lkdGg9IjIwMCIgaGVpZ2h0PSIyMDAiIHNyYz0iaHR0cHM6Ly9tb2Nrb29uLmNvbS9pbWFnZXMvbG9nby1zcXVhcmUtY29tbW9ucy5wbmciPgogIDwvYT4KICA8YnI+CiAgPGEgaHJlZj0iaHR0cHM6Ly9tb2Nrb29uLmNvbS8jZG93bmxvYWQiPjxpbWcgc3JjPSJodHRwczovL2ltZy5zaGllbGRzLmlvL2JhZGdlL0Rvd25sb2FkJTIwYXBwLUdvLWdyZWVuLnN2Zz9zdHlsZT1mbGF0LXNxdWFyZSZjb2xvckI9MTk5N2M2Ii8+PC9hPgogIDxhIGhyZWY9Imh0dHBzOi8vbW9ja29vbi5jb20vIj48aW1nIHNyYz0iaHR0cHM6Ly9pbWcuc2hpZWxkcy5pby9iYWRnZS9XZWJzaXRlLUdvLWdyZWVuLnN2Zz9zdHlsZT1mbGF0LXNxdWFyZSZjb2xvckI9MTk5N2M2Ii8+PC9hPgogIDxhIGhyZWY9Imh0dHA6Ly9lZXB1cmwuY29tL2Rza0IyWCI+PGltZyBzcmM9Imh0dHBzOi8vaW1nLnNoaWVsZHMuaW8vYmFkZ2UvTmV3c2xldHRlci1TdWJzY3JpYmUtZ3JlZW4uc3ZnP3N0eWxlPWZsYXQtc3F1YXJlIi8+PC9hPgogIDxhIGhyZWY9Imh0dHBzOi8vdHdpdHRlci5jb20vR2V0TW9ja29vbiI+PGltZyBzcmM9Imh0dHBzOi8vaW1nLnNoaWVsZHMuaW8vYmFkZ2UvVHdpdHRlcl9AR2V0TW9ja29vbi1mb2xsb3ctYmx1ZS5zdmc/c3R5bGU9ZmxhdC1zcXVhcmUmY29sb3JCPTFkYTFmMiIvPjwvYT4KICA8YSBocmVmPSJodHRwczovL2Rpc2NvcmQuZ2cvTXV0UnBzWTVnRSI+PGltZyBzcmM9Imh0dHBzOi8vaW1nLnNoaWVsZHMuaW8vYmFkZ2UvRGlzY29yZC1nby1ibHVlLnN2Zz9zdHlsZT1mbGF0LXNxdWFyZSZjb2xvckE9NmM4NGQ5JmNvbG9yQj0xZGExZjIiLz48L2E+CiAgPGJyPgogIDxicj4KICA8aDE+QE1vY2tvb24vY29tbW9uczwvaDE+CjwvZGl2PgoKTW9ja29vbidzIENvbW1vbnMgbGlicmFyeSByZWdyb3VwcyBNb2Nrb29uJ3Mgc2hhcmVkIGNvZGUgdXNlZCBpbiB0aGUgW21haW4gYXBwbGljYXRpb25dKGh0dHBzOi8vZ2l0aHViLmNvbS9tb2Nrb29uL21vY2tvb24pIGFuZCB0aGUgW0NMSV0oaHR0cHM6Ly9naXRodWIuY29tL21vY2tvb24vY2xpKS4gSXQgY29udGFpbnMgbW9zdGx5IHR5cGluZ3MgYW5kIGlzIGRlc2lnbmVkIHRvIGJlIHVzZWQgaW4gYm90aCB0aGUgYnJvd3NlciBhbmQgTm9kZS5qcyBlbnZpcm9ubWVudHMuCgotLS0KCiMjIFN1cHBvcnQvZmVlZGJhY2sKCllvdSBjYW4gZGlzY3VzcyBhbGwgdGhpbmdzIHJlbGF0ZWQgdG8gTW9ja29vbiwgYW5kIGFzayBmb3IgaGVscCwgb24gdGhlIFttYWluIGFwcGxpY2F0aW9uIGNvbW11bml0eV0oaHR0cHM6Ly9naXRodWIuY29tL21vY2tvb24vbW9ja29vbi9kaXNjdXNzaW9ucykgb3IgdGhlIFtDTEkgY29tbXVuaXR5XShodHRwczovL2dpdGh1Yi5jb20vbW9ja29vbi9jbGkvZGlzY3Vzc2lvbnMpLiBJdCdzIGFsc28gYSBnb29kIHBsYWNlIHRvIGRpc2N1c3MgYnVncyBhbmQgZmVhdHVyZSByZXF1ZXN0cyBiZWZvcmUgb3BlbmluZyBhbiBpc3N1ZSBvbiB0aGlzIHJlcG9zaXRvcnkuIEZvciBtb3JlIGNoYXQtbGlrZSBkaXNjdXNzaW9ucywgeW91IGNhbiBhbHNvIGpvaW4gb3VyIFtEaXNjb3JkIHNlcnZlcl0oaHR0cHM6Ly9kaXNjb3JkLmdnL011dFJwc1k1Z0UpLgoKIyMgQ29udHJpYnV0aW5nCgpJZiB5b3UgYXJlIGludGVyZXN0ZWQgaW4gY29udHJpYnV0aW5nIHRvIE1vY2tvb24sIHBsZWFzZSB0YWtlIGEgbG9vayBhdCB0aGUgbWFpbiBbY29udHJpYnV0aW5nIGd1aWRlbGluZXNdKGh0dHBzOi8vZ2l0aHViLmNvbS9tb2Nrb29uL21vY2tvb24vYmxvYi9tYWluL0NPTlRSSUJVVElORy5tZCkgYW5kIHRoZSBbb25lcyBzcGVjaWZpYyB0byB0aGlzIHJlcG9zaXRvcnldKGh0dHBzOi8vZ2l0aHViLmNvbS9tb2Nrb29uL2NvbW1vbnMvYmxvYi9tYWluL0NPTlRSSUJVVElORy5tZCkuCgpQbGVhc2UgYWxzbyB0YWtlIGEgbG9vayBhdCBvdXIgW0NvZGUgb2YgQ29uZHVjdF0oaHR0cHM6Ly9naXRodWIuY29tL21vY2tvb24vY29tbW9ucy9ibG9iL21haW4vQ09ERV9PRl9DT05EVUNULm1kKS4KCiMjIERvY3VtZW50YXRpb24KCllvdSB3aWxsIGZpbmQgTW9ja29vbidzIFtkb2N1bWVudGF0aW9uXShodHRwczovL21vY2tvb24uY29tL2RvY3MvbGF0ZXN0KSBvbiB0aGUgb2ZmaWNpYWwgd2Vic2l0ZS4gSXQgY292ZXJzIE1vY2tvb24ncyBtb3N0IGNvbXBsZXggZmVhdHVyZXMuIEZlZWwgZnJlZSB0byBjb250cmlidXRlIG9yIGFzayBmb3IgbmV3IHRvcGljcyB0byBiZSBjb3ZlcmVkLgoKIyMgUm9hZG1hcAoKSWYgeW91IHdhbnQgdG8ga25vdyB3aGF0IHdpbGwgYmUgY29taW5nIGluIHRoZSBuZXh0IHJlbGVhc2UgeW91IGNhbiBjaGVjayB0aGUgZ2xvYmFsIFtSb2FkbWFwXShodHRwczovL2dpdGh1Yi5jb20vb3Jncy9tb2Nrb29uL3Byb2plY3RzLzIpLgoKTmV3IHJlbGVhc2VzIHdpbGwgYmUgYW5ub3VuY2VkIG9uIE1vY2tvb24ncyBbVHdpdHRlciBhY2NvdW50IEBHZXRNb2Nrb29uXShodHRwczovL3R3aXR0ZXIuY29tL0dldE1vY2tvb24pIGFuZCB0aHJvdWdoIHRoZSBuZXdzbGV0dGVyIHRvIHdoaWNoIHlvdSBjYW4gc3Vic2NyaWJlIFtoZXJlXShodHRwOi8vZWVwdXJsLmNvbS9kc2tCMlgpLgo= - readmeEtag: '"0d797f72e52c06417aa8bfc8dff47b2d55f3aee3c1c03533ce3f6866df4025cd"' - readmeLastModified: Mon, 28 Mar 2022 19:38:45 GMT + PiAjIPCfk6ZUaGlzIHJlcG9zaXRvcnkgaGFzIGJlZW4gYXJjaGl2ZWQuIFdlIGtlZXAgaXQgZm9yIGhpc3RvcmljYWwgcmVhc29ucy4gWW91IHdpbGwgZmluZCBNb2Nrb29uJ3MgbmV3IG1vbm9yZXBvIFtoZXJlXShodHRwczovL2dpdGh1Yi5jb20vbW9ja29vbi9tb2Nrb29uKS4KCjxkaXYgYWxpZ249ImNlbnRlciI+CiAgPGEgaHJlZj0iaHR0cHM6Ly9tb2Nrb29uLmNvbSIgYWx0PSJtb2Nrb29uIGxvZ28iPgogICAgPGltZyB3aWR0aD0iMjAwIiBoZWlnaHQ9IjIwMCIgc3JjPSJodHRwczovL21vY2tvb24uY29tL2ltYWdlcy9sb2dvLXNxdWFyZS1hcHAucG5nIj4KICA8L2E+CiAgPGJyPgogIDxhIGhyZWY9Imh0dHBzOi8vbW9ja29vbi5jb20vIj48aW1nIHNyYz0iaHR0cHM6Ly9pbWcuc2hpZWxkcy5pby9iYWRnZS9XZWJzaXRlLUdvLWdyZWVuLnN2Zz9zdHlsZT1mbGF0LXNxdWFyZSZjb2xvckI9MTk5N2M2Ii8+PC9hPgogIDxhIGhyZWY9Imh0dHBzOi8vbW9ja29vbi5jb20vbmV3c2xldHRlci8iPjxpbWcgc3JjPSJodHRwczovL2ltZy5zaGllbGRzLmlvL2JhZGdlL05ld3NsZXR0ZXItU3Vic2NyaWJlLWdyZWVuLnN2Zz9zdHlsZT1mbGF0LXNxdWFyZSIvPjwvYT4KICA8YSBocmVmPSJodHRwczovL3R3aXR0ZXIuY29tL0dldE1vY2tvb24iPjxpbWcgc3JjPSJodHRwczovL2ltZy5zaGllbGRzLmlvL2JhZGdlL1R3aXR0ZXJfQEdldE1vY2tvb24tZm9sbG93LWJsdWUuc3ZnP3N0eWxlPWZsYXQtc3F1YXJlJmNvbG9yQj0xZGExZjIiLz48L2E+CiAgPGEgaHJlZj0iW2h0dHBzOi8vZGlzY29yZC5nZy9GdEpqa2VqS0dwXShodHRwczovL21vY2tvb24uY29tL2Rpc2NvcmQvKSI+PGltZyBzcmM9Imh0dHBzOi8vaW1nLnNoaWVsZHMuaW8vYmFkZ2UvRGlzY29yZC1nby1ibHVlLnN2Zz9zdHlsZT1mbGF0LXNxdWFyZSZjb2xvckE9NmM4NGQ5JmNvbG9yQj0xZGExZjIiLz48L2E+ICAKICA8YnI+CiAgPGJyPgogIDxoMT5Nb2Nrb29uOiBhd2Vzb21lIEFQSSBtb2NraW5nPC9oMT4KPC9kaXY+CgojIyBNb2Nrb29uJ3MgZG9jdW1lbnRhdGlvbgoKWW91IHdpbGwgZmluZCBNb2Nrb29uJ3MgW2RvY3VtZW50YXRpb25dKGh0dHBzOi8vbW9ja29vbi5jb20vZG9jcy9sYXRlc3QvYWJvdXQvKSBvbiB0aGUgb2ZmaWNpYWwgd2Vic2l0ZS4gSXQgY292ZXJzIE1vY2tvb24ncyBtb3N0IGNvbXBsZXggZmVhdHVyZXMuIEZlZWwgZnJlZSB0byBjb250cmlidXRlIG9yIGFzayBmb3IgbmV3IHRvcGljcyB0byBiZSBjb3ZlcmVkLgoKIyMgQ2hhbmdlbG9ncwoKWW91IHdpbGwgZmluZCBNb2Nrb29uIGFwcGxpY2F0aW9ucyBbY2hhbmdlbG9nc10oaHR0cHM6Ly9tb2Nrb29uLmNvbS9yZWxlYXNlcy8pIG9uIHRoZSBvZmZpY2lhbCB3ZWJzaXRlLgoKIyMgU3VwcG9ydC9mZWVkYmFjawoKWW91IGNhbiBkaXNjdXNzIGFsbCB0aGluZ3MgcmVsYXRlZCB0byBNb2Nrb29uIGFuZCBhc2sgZm9yIGhlbHAgb24gdGhlIFtvZmZpY2lhbCBjb21tdW5pdHldKGh0dHBzOi8vZ2l0aHViLmNvbS9tb2Nrb29uL21vY2tvb24vZGlzY3Vzc2lvbnMpLiBJdCdzIGFsc28gYSBnb29kIHBsYWNlIHRvIGRpc2N1c3MgYnVncyBhbmQgZmVhdHVyZSByZXF1ZXN0cyBiZWZvcmUgb3BlbmluZyBhbiBpc3N1ZSBvbiB0aGlzIHJlcG9zaXRvcnkuIEZvciBtb3JlIGNoYXQtbGlrZSBkaXNjdXNzaW9ucywgeW91IGNhbiBhbHNvIGpvaW4gb3VyIFtEaXNjb3JkIHNlcnZlcl0oaHR0cHM6Ly9kaXNjb3JkLmdnL0Z0SmprZWpLR3ApLgoKIyMgQ29udHJpYnV0aW5nCgpJZiB5b3UgYXJlIGludGVyZXN0ZWQgaW4gY29udHJpYnV0aW5nIHRvIE1vY2tvb24sIHBsZWFzZSB0YWtlIGEgbG9vayBhdCB0aGUgW2NvbnRyaWJ1dGluZyBndWlkZWxpbmVzXShodHRwczovL2dpdGh1Yi5jb20vbW9ja29vbi9tb2Nrb29uL2Jsb2IvbWFpbi9DT05UUklCVVRJTkcubWQpLgoKUGxlYXNlIGFsc28gdGFrZSBhIGxvb2sgYXQgb3VyIFtDb2RlIG9mIENvbmR1Y3RdKGh0dHBzOi8vZ2l0aHViLmNvbS9tb2Nrb29uL21vY2tvb24vYmxvYi9tYWluL0NPREVfT0ZfQ09ORFVDVC5tZCkuCgojIyBSb2FkbWFwCgpJZiB5b3Ugd2FudCB0byBrbm93IHdoYXQgd2lsbCBiZSBjb21pbmcgaW4gdGhlIG5leHQgcmVsZWFzZSB5b3UgY2FuIGNoZWNrIHRoZSBnbG9iYWwgW1JvYWRtYXBdKGh0dHBzOi8vbW9ja29vbi5jb20vcHVibGljLXJvYWRtYXAvKS4KCk5ldyByZWxlYXNlcyB3aWxsIGJlIGFubm91bmNlZCBvbiBNb2Nrb29uJ3MgW1R3aXR0ZXIgYWNjb3VudCBAR2V0TW9ja29vbl0oaHR0cHM6Ly90d2l0dGVyLmNvbS9HZXRNb2Nrb29uKSBhbmQgdGhyb3VnaCB0aGUgbmV3c2xldHRlciB0byB3aGljaCB5b3UgY2FuIHN1YnNjcmliZSBbaGVyZV0oaHR0cHM6Ly9tb2Nrb29uLmNvbS9uZXdzbGV0dGVyLykuCg== + readmeEtag: '"5338721b71b5dc5e95a80c194ab6e4c5055130e86872e2796a37a82478a31504"' + readmeLastModified: Fri, 12 Jul 2024 09:45:43 GMT repositoryId: 285017265 description: Mockoon's commons library. Used in Mockoon desktop application and CLI. created: '2020-08-04T15:13:52Z' - updated: '2023-01-28T02:03:50Z' + updated: '2024-07-12T09:46:31Z' language: TypeScript archived: true stars: 3 - watchers: 3 + watchers: 4 forks: 13 owner: mockoon logo: https://avatars.githubusercontent.com/u/49429147?v=4 license: MIT - repoEtag: '"ebf991806598e06993b61548211387915db9fe73a60b1a4f66969dc1e88ddd2b"' - repoLastModified: Sat, 28 Jan 2023 02:03:50 GMT + repoEtag: '"9ceeaaeb4fbc35dc38b4b4cfa2784120cab7583283e9d492cd0375da015661f6"' + repoLastModified: Fri, 12 Jul 2024 09:46:31 GMT foundInMaster: true category: Testing id: 035d4b9d493782e934c38231bb159b00 @@ -21632,7 +21632,7 @@ owner: sergeyklay logo: https://avatars.githubusercontent.com/u/1256298?v=4 license: MIT - repoEtag: '"7e3b0db8604a3800a623270c4b4c4303249c6db23eba5337c6690b02d20d3578"' + repoEtag: '"a6a8771b007f6e898c69149daf5d2f1d3bc42dc6b194d5d2a5d9db28353fadb6"' repoLastModified: Thu, 11 Jul 2024 13:19:51 GMT category: Server Implementations foundInMaster: true @@ -22273,17 +22273,17 @@ Template repo for creating Pulumi providers based on pulschema and pulumi-provider-framework created: '2022-11-08T10:44:25Z' - updated: '2024-07-11T01:28:27Z' + updated: '2024-07-12T20:34:10Z' language: Go archived: false stars: 2 - watchers: 2 + watchers: 3 forks: 0 owner: cloudy-sky-software logo: https://avatars.githubusercontent.com/u/97355959?v=4 license: Apache-2.0 - repoEtag: '"c7d06370d16eeb535838a96a409618d8f3ee50ca872f5291fe53b1831498f22b"' - repoLastModified: Thu, 11 Jul 2024 01:28:27 GMT + repoEtag: '"1b821a97fb3ab261aec3be9e27575bc142860f9eba7680f86e160bd2c7b655f9"' + repoLastModified: Fri, 12 Jul 2024 20:34:10 GMT category: Server Implementations foundInMaster: true - source: openapi3 tags @@ -22765,7 +22765,7 @@ A tool for creating type-validated client libraries from an OpenAPI document. created: '2019-06-05T20:09:55Z' - updated: '2024-01-19T10:26:24Z' + updated: '2024-07-12T16:22:16Z' language: Python archived: false stars: 2 @@ -22774,8 +22774,8 @@ owner: enorganic logo: https://avatars.githubusercontent.com/u/91716117?v=4 license: MIT - repoEtag: '"d4b6ba8a5eab9a24a5249e5121ff2e7fc17a403b253edc6c5f2954716dd45525"' - repoLastModified: Fri, 19 Jan 2024 10:26:24 GMT + repoEtag: '"0bc1163f14baa0d617571e0983eb830a1e9fd9b517c4e50aa1bf5e15f51a9d6c"' + repoLastModified: Fri, 12 Jul 2024 16:22:16 GMT category: Parsers foundInMaster: true - source: openapi3 tags @@ -23284,7 +23284,7 @@ repositoryId: 808226704 description: Lite - fiber wrapper OpenAPI 3 spec auto generate created: '2024-05-30T16:25:58Z' - updated: '2024-07-07T09:12:07Z' + updated: '2024-07-12T17:58:50Z' language: Go archived: false stars: 2 @@ -23293,8 +23293,8 @@ owner: go-lite logo: https://avatars.githubusercontent.com/u/173594949?v=4 license: MIT - repoEtag: '"2270f61ba8d20d21fffe85e1cb6161e1e110962d79be11cbf537cf625b4990a5"' - repoLastModified: Sun, 07 Jul 2024 09:12:07 GMT + repoEtag: '"16a60303deac431f019be8b4e817096363c461e9c03eeeddf56d228e4ebd2be5"' + repoLastModified: Fri, 12 Jul 2024 17:58:50 GMT category: Parsers foundInMaster: true - source: openapi3 tags @@ -23798,7 +23798,7 @@ repositoryId: 672491411 description: Asset Administration Shell(AAS) proxy for RDBMS backend created: '2023-07-30T09:12:05Z' - updated: '2024-07-11T21:40:18Z' + updated: '2024-07-12T12:45:34Z' language: Go archived: false stars: 2 @@ -23807,8 +23807,8 @@ owner: hiroyoshii logo: https://avatars.githubusercontent.com/u/40140638?v=4 license: Apache-2.0 - repoEtag: '"710bc98aed903d0f802ad7b6679fa72ade95babf4f303592b792abd82cf94e6a"' - repoLastModified: Thu, 11 Jul 2024 21:40:18 GMT + repoEtag: '"fe812741af36f3d2b1fc82070cc2662fd8856bffff80313010f70b08de214482"' + repoLastModified: Fri, 12 Jul 2024 12:45:34 GMT category: Server Implementations foundInMaster: true - source: openapi3 tags @@ -23901,17 +23901,17 @@ repositoryId: 631874551 description: RESTful Web Services base on Echo created: '2023-04-24T08:42:46Z' - updated: '2023-04-25T11:01:23Z' + updated: '2024-07-12T06:33:28Z' language: Go archived: false stars: 2 - watchers: 1 + watchers: 2 forks: 0 owner: fourcels logo: https://avatars.githubusercontent.com/u/1042568?v=4 license: MIT - repoEtag: '"898f16194496f57565a7520fd5d68b017eacd929e44067b7331d67e7fa9543eb"' - repoLastModified: Tue, 25 Apr 2023 11:01:23 GMT + repoEtag: '"6f783cd883ce1fa74addb43db9c9d147379e72ff970b94ae318119daee7c2df8"' + repoLastModified: Fri, 12 Jul 2024 06:33:28 GMT category: Server Implementations foundInMaster: true - source: openapi3 tags @@ -24606,13 +24606,13 @@ id: aa45746155c55d35e08ef817dd2cde1c repositoryMetadata: base64Readme: >- - YGBgdGV4dArilojilojilojilojilojilojilZcg4paI4paI4paI4paI4paI4paI4paI4pWX4paI4paI4paI4paI4paI4paI4pWXIOKWiOKWiOKVlyAgIOKWiOKWiOKVl+KWiOKWiOKWiOKWiOKWiOKWiOKWiOKWiOKVl+KWiOKWiOKVlyAgIOKWiOKWiOKVlwrilojilojilZTilZDilZDilojilojilZfilojilojilZTilZDilZDilZDilZDilZ3ilojilojilZTilZDilZDilojilojilZfilojilojilZEgICDilojilojilZHilZrilZDilZDilojilojilZTilZDilZDilZ3ilZrilojilojilZcg4paI4paI4pWU4pWdCuKWiOKWiOKVkSAg4paI4paI4pWR4paI4paI4paI4paI4paI4pWXICDilojilojilojilojilojilojilZTilZ3ilojilojilZEgICDilojilojilZEgICDilojilojilZEgICAg4pWa4paI4paI4paI4paI4pWU4pWdCuKWiOKWiOKVkSAg4paI4paI4pWR4paI4paI4pWU4pWQ4pWQ4pWdICDilojilojilZTilZDilZDilZDilZ0g4paI4paI4pWRICAg4paI4paI4pWRICAg4paI4paI4pWRICAgICDilZrilojilojilZTilZ0K4paI4paI4paI4paI4paI4paI4pWU4pWd4paI4paI4paI4paI4paI4paI4paI4pWX4paI4paI4pWRICAgICDilZrilojilojilojilojilojilojilZTilZ0gICDilojilojilZEgICAgICDilojilojilZEK4pWa4pWQ4pWQ4pWQ4pWQ4pWQ4pWdIOKVmuKVkOKVkOKVkOKVkOKVkOKVkOKVneKVmuKVkOKVnSAgICAgIOKVmuKVkOKVkOKVkOKVkOKVkOKVnSAgICDilZrilZDilZ0gICAgICDilZrilZDilZ0KPi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tIFJFU1QgQVBJIGZvciBQcm94aWVzCmBgYApbIVtkamFuZ29dKGh0dHBzOi8vaW1nLnNoaWVsZHMuaW8vYmFkZ2UvZGphbmdvLTQuMi0lMjMwOTJFMjA/c3R5bGU9ZmxhdC1zcXVhcmUmbG9nbz1kamFuZ28pXShodHRwczovL3d3dy5kamFuZ29wcm9qZWN0LmNvbSkKWyFbcHl0aG9uXShodHRwczovL2ltZy5zaGllbGRzLmlvL2JhZGdlL3B5dGhvbi0zLjExLSUyMzM3NzZBQj9zdHlsZT1mbGF0LXNxdWFyZSZsb2dvPXB5dGhvbildKGh0dHBzOi8vd3d3LnB5dGhvbi5vcmcpClshW215cHldKGh0dHBzOi8vd3d3Lm15cHktbGFuZy5vcmcvc3RhdGljL215cHlfYmFkZ2Uuc3ZnKV0oaHR0cHM6Ly9teXB5LWxhbmcub3JnKQpbIVtibGFja10oaHR0cHM6Ly9pbWcuc2hpZWxkcy5pby9iYWRnZS9jb2RlJTIwc3R5bGUtYmxhY2stYmxhY2suc3ZnP3N0eWxlPWZsYXQtc3F1YXJlJmxvZ289c3R5bGVsaW50KV0oaHR0cHM6Ly9naXRodWIuY29tL3BzZi9ibGFjaykKWyFbUnVmZl0oaHR0cHM6Ly9pbWcuc2hpZWxkcy5pby9lbmRwb2ludD91cmw9aHR0cHM6Ly9yYXcuZ2l0aHVidXNlcmNvbnRlbnQuY29tL2FzdHJhbC1zaC9ydWZmL21haW4vYXNzZXRzL2JhZGdlL3YyLmpzb24pXShodHRwczovL2dpdGh1Yi5jb20vYXN0cmFsLXNoL3J1ZmYpClshW3ByZS1jb21taXRdKGh0dHBzOi8vaW1nLnNoaWVsZHMuaW8vYmFkZ2UvcHJlLS1jb21taXQtZW5hYmxlZC1icmlnaHRncmVlbj9zdHlsZT1mbGF0LXNxdWFyZSZsb2dvPXByZS1jb21taXQpXShodHRwczovL3ByZS1jb21taXQuY29tKQpbIVtsaWNlbnNlXShodHRwczovL2ltZy5zaGllbGRzLmlvL2JhZGdlL2xpY2Vuc2UtTUlULWJsdWU/c3R5bGU9ZmxhdC1zcXVhcmUpXShodHRwczovL29wZW5zb3VyY2Uub3JnL2xpY2Vuc2VzL01JVCkKWyFbQ0ldKGh0dHBzOi8vZ2l0aHViLmNvbS96dWJlZGV2L2RlcHV0eS9hY3Rpb25zL3dvcmtmbG93cy9jaS55bWwvYmFkZ2Uuc3ZnKV0oaHR0cHM6Ly9naXRodWIuY29tL3p1YmVkZXYvZGVwdXR5L2FjdGlvbnMvd29ya2Zsb3dzL2NpLnltbCkKCiMjIEZlYXR1cmVzCgotIFt4XSBSZXN0IEFQSSBwcm92aWRpbmcgZnJlZSBwcm94aWVzIHRvIHVzZQotIFt4XSBJbnRlZ3JhdGlvbiB3aXRoIFtzY3JhcHlkb29dKGh0dHBzOi8vZ2l0aHViLmNvbS96dWJlZGV2L3NjcmFweWRvbykgdG8gb2J0YWluIHByb3hpZXMKLSBbeF0gSW50ZWdyYXRpb24gd2l0aCBbaW5zcGVjdG9yXShodHRwczovL2dpdGh1Yi5jb20venViZWRldi9pbnNwZWN0b3IpIHRvIHZhbGlkYXRlIHByb3hpZXMKLSBbeF0gUHJveGllcyB1cGRhdGVkIGFuZCBjaGVja2VkIGhvdXJseQoKIyMgVXNhZ2UKCmBgYGJhc2gKIyBDb3B5IHRoZSBleGFtcGxlIGVudmlyb25tZW50IGZpbGUgdG8gLmVudgojIFNDUkFQWURfVVJMIG11c3QgYmUgc2V0IGZvciB0aGUgd29ya2Zsb3cgdG8gd29yaywKIyBZb3UgY2FuIGdldCBhbiBpbnN0YW5jZSB1cCBhbmQgcnVubmluZyB0aHJvdWdoIGh0dHBzOi8vZ2l0aHViLmNvbS96dWJlZGV2L3NjcmFweWRvbwpjcCAuZW52LmV4YW1wbGUgLmVudgoKIyBCdWlsZCB0aGUgZG9ja2VyIGltYWdlIGFuZCBydW4gdGhlIGNvbnRhaW5lcgpkb2NrZXItY29tcG9zZSB1cCAtLWJ1aWxkIC0tZGV0YWNoCgojIFlvdSBjYW4gc2NhbGUgdXAgdGhlIG51bWJlciBvZiB3b3JrZXJzIGZvciBtb3JlIGNvbmN1cnJlbmN5CmRvY2tlci1jb21wb3NlIHVwIC0tc2NhbGUgd29ya2VyPTQgLS1kZXRhY2gKYGBgCgpbRGVwdXR5IEFQSV0oaHR0cDovL2xvY2FsaG9zdDo4MDAwKSBpcyBub3cgYXZhaWxhYmxlIGF0IGh0dHA6Ly9sb2NhbGhvc3Q6ODAwMC4gSWYgYERFQlVHPVRydWVgLCB5b3UgY2FuIHNlZSB0aGUgYnJvd3NhYmxlIEFQSS4KCltEZXB1dHkgQWRtaW5dKGh0dHA6Ly9sb2NhbGhvc3Q6ODAwMC9hZG1pbikgaXMgbm93IGF2YWlsYWJsZSBhdCBodHRwOi8vbG9jYWxob3N0OjgwMDAvYWRtaW4uIENyZWRlbnRpYWxzIGFyZSBzZXQgYXV0b21hdGljYWxseSBmcm9tIGAuZW52YCBmaWxlLgoKIyMgRW5kcG9pbnRzCgotIFtyYW5kb21dKGh0dHA6Ly9sb2NhbGhvc3Q6ODAwMC9wcm94aWVzL3JhbmRvbSk6IGAvcHJveGllcy9yYW5kb21gIC0gZ2V0IGEgcmFuZG9tIHByb3h5CgojIyBEZXZlbG9wbWVudAoKYGBgYmFzaAojIFBvZXRyeSBpcyByZXF1aXJlZCBmb3IgaW5zdGFsbGluZyBhbmQgbWFuYWdpbmcgZGVwZW5kZW5jaWVzCiMgaHR0cHM6Ly9weXRob24tcG9ldHJ5Lm9yZy9kb2NzLyNpbnN0YWxsYXRpb24KcG9ldHJ5IGluc3RhbGwKCiMgSWYgeW91IGRvbid0IGxpa2UgZG9pbmcgYHBvZXRyeSBydW5gIGFsbCB0aGUgdGltZQojIHBvZXRyeSBzaGVsbCAgIyBBY3RpdmF0ZSB2aXJ0dWFsIGVudmlyb25tZW50IGluIHRlcm1pbmFsCgojIFJlcXVpcmVzIGEgUG9zdGdyZVNRTCBkYXRhYmFzZSB0byBiZSBydW5uaW5nIGFuZCBjb25maWd1cmVkIGluIC5lbnYKIyBwb2V0cnkgcnVuIHB5dGhvbiBtYW5hZ2UucHkgbWFrZW1pZ3JhdGlvbnMgICMgQ3JlYXRlIG1pZ3JhdGlvbnMKcG9ldHJ5IHJ1biBweXRob24gbWFuYWdlLnB5IG1pZ3JhdGUgICMgUnVuIG1pZ3JhdGlvbnMKCiMgQ29sbGVjdCBzdGF0aWMgZmlsZXMgZm9yIHdoaXRlbm9pc2UKcG9ldHJ5IHJ1biBweXRob24gbWFuYWdlLnB5IGNvbGxlY3RzdGF0aWMKCiMgUnVuIERlcHV0eSBBUEkKcG9ldHJ5IHJ1biBweXRob24gbWFuYWdlLnB5IHJ1bnNlcnZlciAwLjAuMC4wOjgwMDAKCiMgQ3JlYXRlIGEgc3VwZXJ1c2VyCnBvZXRyeSBydW4gcHl0aG9uIG1hbmFnZS5weSBjcmVhdGVzdXBlcnVzZXIKCiMgSW5zdGFsbCBwcmUtY29tbWl0IGhvb2tzCnBvZXRyeSBydW4gcHJlLWNvbW1pdCBpbnN0YWxsCgojIEZvcm1hdHRpbmcgKGlucGxhY2UgZm9ybWF0cyBjb2RlKQpwb2V0cnkgcnVuIGJsYWNrIC4KCiMgTGludGluZyAoYW5kIHRvIGZpeCBhdXRvbWF0aWNhbGx5KQpwb2V0cnkgcnVuIHJ1ZmYgLgpwb2V0cnkgcnVuIHJ1ZmYgLS1maXggLgoKIyBUeXBlIGNoZWNraW5nCnBvZXRyeSBydW4gbXlweSAuCmBgYAoKQ29uZmlndXJhdGlvbiBkZXRhaWxzIGNhbiBiZSBmb3VuZCBpbiBbcHlwcm9qZWN0LnRvbWxdKHB5cHJvamVjdC50b21sKS4KCiMjIFN1cHBvcnQKWyFbUGF5cGFsXShodHRwczovL2ltZy5zaGllbGRzLmlvL2JhZGdlL1BheXBhbC1ATWRadWJhaXJCZWctMjUzQjgwPyZsb2dvPXBheXBhbCldKGh0dHBzOi8vcGF5cGFsLm1lL01kWnViYWlyQmVnLzEwKQo= - readmeEtag: '"e7a88e5087aac2f3eb2b7fb12e77d7e19d6541dbfe1de004b5d4e616e3f2539b"' - readmeLastModified: Sat, 14 Oct 2023 03:42:27 GMT + YGBgdGV4dArilojilojilojilojilojilojilZcg4paI4paI4paI4paI4paI4paI4paI4pWX4paI4paI4paI4paI4paI4paI4pWXIOKWiOKWiOKVlyAgIOKWiOKWiOKVl+KWiOKWiOKWiOKWiOKWiOKWiOKWiOKWiOKVl+KWiOKWiOKVlyAgIOKWiOKWiOKVlwrilojilojilZTilZDilZDilojilojilZfilojilojilZTilZDilZDilZDilZDilZ3ilojilojilZTilZDilZDilojilojilZfilojilojilZEgICDilojilojilZHilZrilZDilZDilojilojilZTilZDilZDilZ3ilZrilojilojilZcg4paI4paI4pWU4pWdCuKWiOKWiOKVkSAg4paI4paI4pWR4paI4paI4paI4paI4paI4pWXICDilojilojilojilojilojilojilZTilZ3ilojilojilZEgICDilojilojilZEgICDilojilojilZEgICAg4pWa4paI4paI4paI4paI4pWU4pWdCuKWiOKWiOKVkSAg4paI4paI4pWR4paI4paI4pWU4pWQ4pWQ4pWdICDilojilojilZTilZDilZDilZDilZ0g4paI4paI4pWRICAg4paI4paI4pWRICAg4paI4paI4pWRICAgICDilZrilojilojilZTilZ0K4paI4paI4paI4paI4paI4paI4pWU4pWd4paI4paI4paI4paI4paI4paI4paI4pWX4paI4paI4pWRICAgICDilZrilojilojilojilojilojilojilZTilZ0gICDilojilojilZEgICAgICDilojilojilZEK4pWa4pWQ4pWQ4pWQ4pWQ4pWQ4pWdIOKVmuKVkOKVkOKVkOKVkOKVkOKVkOKVneKVmuKVkOKVnSAgICAgIOKVmuKVkOKVkOKVkOKVkOKVkOKVnSAgICDilZrilZDilZ0gICAgICDilZrilZDilZ0KPi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tIFJFU1QgQVBJIGZvciBQcm94aWVzCmBgYApbIVtkamFuZ29dKGh0dHBzOi8vaW1nLnNoaWVsZHMuaW8vYmFkZ2UvZGphbmdvLTQuMi0lMjMwOTJFMjA/c3R5bGU9ZmxhdC1zcXVhcmUmbG9nbz1kamFuZ28pXShodHRwczovL3d3dy5kamFuZ29wcm9qZWN0LmNvbSkKWyFbcHl0aG9uXShodHRwczovL2ltZy5zaGllbGRzLmlvL2JhZGdlL3B5dGhvbi0zLjEyLSUyMzM3NzZBQj9zdHlsZT1mbGF0LXNxdWFyZSZsb2dvPXB5dGhvbildKGh0dHBzOi8vd3d3LnB5dGhvbi5vcmcpClshW215cHldKGh0dHBzOi8vd3d3Lm15cHktbGFuZy5vcmcvc3RhdGljL215cHlfYmFkZ2Uuc3ZnKV0oaHR0cHM6Ly9teXB5LWxhbmcub3JnKQpbIVtibGFja10oaHR0cHM6Ly9pbWcuc2hpZWxkcy5pby9iYWRnZS9jb2RlJTIwc3R5bGUtYmxhY2stYmxhY2suc3ZnP3N0eWxlPWZsYXQtc3F1YXJlJmxvZ289c3R5bGVsaW50KV0oaHR0cHM6Ly9naXRodWIuY29tL3BzZi9ibGFjaykKWyFbUnVmZl0oaHR0cHM6Ly9pbWcuc2hpZWxkcy5pby9lbmRwb2ludD91cmw9aHR0cHM6Ly9yYXcuZ2l0aHVidXNlcmNvbnRlbnQuY29tL2FzdHJhbC1zaC9ydWZmL21haW4vYXNzZXRzL2JhZGdlL3YyLmpzb24pXShodHRwczovL2dpdGh1Yi5jb20vYXN0cmFsLXNoL3J1ZmYpClshW3ByZS1jb21taXRdKGh0dHBzOi8vaW1nLnNoaWVsZHMuaW8vYmFkZ2UvcHJlLS1jb21taXQtZW5hYmxlZC1icmlnaHRncmVlbj9zdHlsZT1mbGF0LXNxdWFyZSZsb2dvPXByZS1jb21taXQpXShodHRwczovL3ByZS1jb21taXQuY29tKQpbIVtsaWNlbnNlXShodHRwczovL2ltZy5zaGllbGRzLmlvL2JhZGdlL2xpY2Vuc2UtTUlULWJsdWU/c3R5bGU9ZmxhdC1zcXVhcmUpXShodHRwczovL29wZW5zb3VyY2Uub3JnL2xpY2Vuc2VzL01JVCkKWyFbQ0ldKGh0dHBzOi8vZ2l0aHViLmNvbS96dWJlZGV2L2RlcHV0eS9hY3Rpb25zL3dvcmtmbG93cy9jaS55bWwvYmFkZ2Uuc3ZnKV0oaHR0cHM6Ly9naXRodWIuY29tL3p1YmVkZXYvZGVwdXR5L2FjdGlvbnMvd29ya2Zsb3dzL2NpLnltbCkKCiMjIEZlYXR1cmVzCgotIFt4XSBSZXN0IEFQSSBwcm92aWRpbmcgZnJlZSBwcm94aWVzIHRvIHVzZQotIFt4XSBJbnRlZ3JhdGlvbiB3aXRoIFtzY3JhcHlkb29dKGh0dHBzOi8vZ2l0aHViLmNvbS96dWJlZGV2L3NjcmFweWRvbykgdG8gb2J0YWluIHByb3hpZXMKLSBbeF0gSW50ZWdyYXRpb24gd2l0aCBbaW5zcGVjdG9yXShodHRwczovL2dpdGh1Yi5jb20venViZWRldi9pbnNwZWN0b3IpIHRvIHZhbGlkYXRlIHByb3hpZXMKLSBbeF0gUHJveGllcyB1cGRhdGVkIGFuZCBjaGVja2VkIGhvdXJseQoKIyMgVXNhZ2UKCmBgYGJhc2gKIyBDb3B5IHRoZSBleGFtcGxlIGVudmlyb25tZW50IGZpbGUgdG8gLmVudgojIFNDUkFQWURfVVJMIG11c3QgYmUgc2V0IGZvciB0aGUgd29ya2Zsb3cgdG8gd29yaywKIyBZb3UgY2FuIGdldCBhbiBpbnN0YW5jZSB1cCBhbmQgcnVubmluZyB0aHJvdWdoIGh0dHBzOi8vZ2l0aHViLmNvbS96dWJlZGV2L3NjcmFweWRvbwpjcCAuZW52LmV4YW1wbGUgLmVudgoKIyBCdWlsZCB0aGUgZG9ja2VyIGltYWdlIGFuZCBydW4gdGhlIGNvbnRhaW5lcgpkb2NrZXItY29tcG9zZSB1cCAtLWJ1aWxkIC0tZGV0YWNoCgojIFlvdSBjYW4gc2NhbGUgdXAgdGhlIG51bWJlciBvZiB3b3JrZXJzIGZvciBtb3JlIGNvbmN1cnJlbmN5CmRvY2tlci1jb21wb3NlIHVwIC0tc2NhbGUgd29ya2VyPTQgLS1kZXRhY2gKYGBgCgpbRGVwdXR5IEFQSV0oaHR0cDovL2xvY2FsaG9zdDo4MDAwKSBpcyBub3cgYXZhaWxhYmxlIGF0IGh0dHA6Ly9sb2NhbGhvc3Q6ODAwMC4gSWYgYERFQlVHPVRydWVgLCB5b3UgY2FuIHNlZSB0aGUgYnJvd3NhYmxlIEFQSS4KCltEZXB1dHkgQWRtaW5dKGh0dHA6Ly9sb2NhbGhvc3Q6ODAwMC9hZG1pbikgaXMgbm93IGF2YWlsYWJsZSBhdCBodHRwOi8vbG9jYWxob3N0OjgwMDAvYWRtaW4uIENyZWRlbnRpYWxzIGFyZSBzZXQgYXV0b21hdGljYWxseSBmcm9tIGAuZW52YCBmaWxlLgoKIyMgRW5kcG9pbnRzCgotIFtyYW5kb21dKGh0dHA6Ly9sb2NhbGhvc3Q6ODAwMC9wcm94aWVzL3JhbmRvbSk6IGAvcHJveGllcy9yYW5kb21gIC0gZ2V0IGEgcmFuZG9tIHByb3h5CgojIyBEZXZlbG9wbWVudAoKYGBgYmFzaAojIFBvZXRyeSBpcyByZXF1aXJlZCBmb3IgaW5zdGFsbGluZyBhbmQgbWFuYWdpbmcgZGVwZW5kZW5jaWVzCiMgaHR0cHM6Ly9weXRob24tcG9ldHJ5Lm9yZy9kb2NzLyNpbnN0YWxsYXRpb24KcG9ldHJ5IGluc3RhbGwKCiMgSWYgeW91IGRvbid0IGxpa2UgZG9pbmcgYHBvZXRyeSBydW5gIGFsbCB0aGUgdGltZQojIHBvZXRyeSBzaGVsbCAgIyBBY3RpdmF0ZSB2aXJ0dWFsIGVudmlyb25tZW50IGluIHRlcm1pbmFsCgojIFJlcXVpcmVzIGEgUG9zdGdyZVNRTCBkYXRhYmFzZSB0byBiZSBydW5uaW5nIGFuZCBjb25maWd1cmVkIGluIC5lbnYKIyBwb2V0cnkgcnVuIHB5dGhvbiBtYW5hZ2UucHkgbWFrZW1pZ3JhdGlvbnMgICMgQ3JlYXRlIG1pZ3JhdGlvbnMKcG9ldHJ5IHJ1biBweXRob24gbWFuYWdlLnB5IG1pZ3JhdGUgICMgUnVuIG1pZ3JhdGlvbnMKCiMgQ29sbGVjdCBzdGF0aWMgZmlsZXMgZm9yIHdoaXRlbm9pc2UKcG9ldHJ5IHJ1biBweXRob24gbWFuYWdlLnB5IGNvbGxlY3RzdGF0aWMKCiMgUnVuIERlcHV0eSBBUEkKcG9ldHJ5IHJ1biBweXRob24gbWFuYWdlLnB5IHJ1bnNlcnZlciAwLjAuMC4wOjgwMDAKCiMgQ3JlYXRlIGEgc3VwZXJ1c2VyCnBvZXRyeSBydW4gcHl0aG9uIG1hbmFnZS5weSBjcmVhdGVzdXBlcnVzZXIKCiMgSW5zdGFsbCBwcmUtY29tbWl0IGhvb2tzCnBvZXRyeSBydW4gcHJlLWNvbW1pdCBpbnN0YWxsCgojIEZvcm1hdHRpbmcgKGlucGxhY2UgZm9ybWF0cyBjb2RlKQpwb2V0cnkgcnVuIGJsYWNrIC4KCiMgTGludGluZyAoYW5kIHRvIGZpeCBhdXRvbWF0aWNhbGx5KQpwb2V0cnkgcnVuIHJ1ZmYgLgpwb2V0cnkgcnVuIHJ1ZmYgLS1maXggLgoKIyBUeXBlIGNoZWNraW5nCnBvZXRyeSBydW4gbXlweSAuCmBgYAoKQ29uZmlndXJhdGlvbiBkZXRhaWxzIGNhbiBiZSBmb3VuZCBpbiBbcHlwcm9qZWN0LnRvbWxdKHB5cHJvamVjdC50b21sKS4KCiMjIFN1cHBvcnQKWyFbUGF5cGFsXShodHRwczovL2ltZy5zaGllbGRzLmlvL2JhZGdlL1BheXBhbC1ATWRadWJhaXJCZWctMjUzQjgwPyZsb2dvPXBheXBhbCldKGh0dHBzOi8vcGF5cGFsLm1lL01kWnViYWlyQmVnLzEwKQo= + readmeEtag: '"6f831e28025df4ec879281ba23fb9d0dd74e03c870f685501c82ebe4a69bfcaa"' + readmeLastModified: Sat, 13 Jul 2024 02:50:39 GMT repositoryId: 677937436 description: REST API for Proxies created: '2023-08-13T06:20:27Z' - updated: '2024-03-25T03:56:12Z' + updated: '2024-07-13T02:50:44Z' language: Python archived: false stars: 2 @@ -24621,8 +24621,8 @@ owner: zubedev logo: https://avatars.githubusercontent.com/u/41994356?v=4 license: MIT - repoEtag: '"30af1e042257ab5316d69afe54e2a338e3392539a585cc394fcba0c68a7076f5"' - repoLastModified: Mon, 25 Mar 2024 03:56:12 GMT + repoEtag: '"70e0b63f1b8e99623170809793a216c04b2ab0fd5415ef4827789663c75993b3"' + repoLastModified: Sat, 13 Jul 2024 02:50:44 GMT category: Server Implementations foundInMaster: true - source: openapi3 tags @@ -24724,7 +24724,7 @@ owner: tidepool-org logo: https://avatars.githubusercontent.com/u/4390820?v=4 license: BSD-2-Clause - repoEtag: '"257e0c91f442a47810ff8533c0b29584945ee71ef3151da52daeb5e06db3c5ab"' + repoEtag: '"c547f72334b053f0b6b93acc9e4c5b3505df19b0a9b127094a6188c4d3f07b92"' repoLastModified: Wed, 10 Jul 2024 02:33:08 GMT category: Server Implementations foundInMaster: true @@ -25596,7 +25596,7 @@ repositoryId: 819191357 description: Go's API server can generate open API documents created: '2024-06-24T02:43:37Z' - updated: '2024-07-11T09:17:20Z' + updated: '2024-07-12T10:00:59Z' language: Go archived: false stars: 1 @@ -25605,8 +25605,8 @@ owner: goodluckxu-go logo: https://avatars.githubusercontent.com/u/110141236?v=4 license: MIT - repoEtag: '"72fd41e13fcace1dd988f9d88d13799fdbea4ee3108e1c6af1bb7bbd5db21aa0"' - repoLastModified: Thu, 11 Jul 2024 09:17:20 GMT + repoEtag: '"7975aa315d1d0d13889427ee1f766f0c24450a1b3e5b73a760a86a8cd71c49fe"' + repoLastModified: Fri, 12 Jul 2024 10:00:59 GMT category: Parsers foundInMaster: true - source: openapi3 tags @@ -26357,16 +26357,16 @@ repositoryId: 296348041 description: Web portal and API for the Curated Metagenomics Data project created: '2020-09-17T14:16:44Z' - updated: '2022-09-30T04:25:48Z' + updated: '2024-07-12T06:24:26Z' language: Python archived: false - stars: 1 + stars: 0 watchers: 4 forks: 0 owner: seandavi logo: https://avatars.githubusercontent.com/u/92435?v=4 - repoEtag: '"873f61f1014bd7c0ff6b68728971f260e6a3aa9ff7480122f6844e844b980e9e"' - repoLastModified: Fri, 30 Sep 2022 04:25:48 GMT + repoEtag: '"f7f1499b2dab2862b87502f78a9489292a175f26c6f190c967ef09efc3533052"' + repoLastModified: Fri, 12 Jul 2024 06:24:26 GMT foundInMaster: true id: fb4fed9b0a7ae53a122c03126af2f4d0 - source: openapi3 tags @@ -26566,17 +26566,17 @@ deleting protein data, as well as advanced features like an AI chatbot for SQL query generation and visualizations using Three.js. created: '2024-05-28T06:50:21Z' - updated: '2024-07-10T18:50:20Z' + updated: '2024-07-12T23:25:20Z' language: TypeScript archived: false stars: 1 - watchers: 2 + watchers: 3 forks: 2 owner: parthasarathydNU logo: https://avatars.githubusercontent.com/u/113069126?v=4 license: MIT - repoEtag: '"f94b16f4f308e4c43bcf8c87a30b9244a095d7e5112b41873a40da449f95f6b3"' - repoLastModified: Wed, 10 Jul 2024 18:50:20 GMT + repoEtag: '"cdddd57a689ac8936ee1dcb0c41e0ab440780e04b0e54a56212c9e6f3740ccb3"' + repoLastModified: Fri, 12 Jul 2024 23:25:20 GMT category: Server Implementations foundInMaster: true - source: openapi3 tags @@ -28558,7 +28558,7 @@ owner: ExpediaGroup logo: https://avatars.githubusercontent.com/u/38541875?v=4 license: Apache-2.0 - repoEtag: '"efc6bae21f888602a46557615e1f6f9fa371b704bd77b0ac272697d4946dfea3"' + repoEtag: '"aefeaddaea0e36eb07696a877d3f3df4934a7e97c579a9b6b4c9167cb2e11725"' repoLastModified: Wed, 10 Jul 2024 15:18:36 GMT category: Parsers foundInMaster: true @@ -29384,13 +29384,13 @@ id: af0bcffeb9100735d4b9e67241d85444 repositoryMetadata: base64Readme: >- - PGRpdiBpZD0iaGVhZGVyIiBhbGlnbj0iY2VudGVyIj4KICAgIDxoMT5CcmlkZ2VXYXkgSHViPC9oMT4KICAgIDxoMz7wn6exIEFQSSBHYXRld2F5PC9oMz4KPC9kaXY+Cgo8ZGl2IGlkPSJiYWRnZXMiIGFsaWduPSJjZW50ZXIiPgoKWyFbbGFuZ3VhZ2VdKGh0dHBzOi8vaW1nLnNoaWVsZHMuaW8vYmFkZ2UvSmF2YSUyMDE3LWU2ODkyZSldKGh0dHBzOi8vZ2l0aHViLmNvbS9KdXN0ZWRsZXYvYnJpZGdld2F5aHViKQpbIVtmcmFtZXdvcmtdKGh0dHBzOi8vaW1nLnNoaWVsZHMuaW8vYmFkZ2UvU3ByaW5nJTIwRnJhbWV3b3JrJTIwNi02Y2I1MmQpXShodHRwczovL2dpdGh1Yi5jb20vSnVzdGVkbGV2L2JyaWRnZXdheWh1YikKWyFbZnJhbWV3b3JrXShodHRwczovL2ltZy5zaGllbGRzLmlvL2JhZGdlL1NwcmluZyUyMEJvb3QlMjAzLTZjYjUyZCldKGh0dHBzOi8vZ2l0aHViLmNvbS9KdXN0ZWRsZXYvYnJpZGdld2F5aHViKQpbIVtsaWNlbnNlXShodHRwczovL2ltZy5zaGllbGRzLmlvL2dpdGh1Yi9saWNlbnNlL0p1c3RlZGxldi9icmlkZ2V3YXlodWIpXShodHRwczovL2dpdGh1Yi5jb20vSnVzdGVkbGV2L2JyaWRnZXdheWh1YikKWyFbc3RhcnNdKGh0dHBzOi8vaW1nLnNoaWVsZHMuaW8vZ2l0aHViL3N0YXJzL0p1c3RlZGxldi9icmlkZ2V3YXlodWIpXShodHRwczovL2dpdGh1Yi5jb20vSnVzdGVkbGV2L2JyaWRnZXdheWh1Yi9zdGFyKQpbIVtpc3N1ZXNdKGh0dHBzOi8vaW1nLnNoaWVsZHMuaW8vZ2l0aHViL2lzc3Vlcy9KdXN0ZWRsZXYvYnJpZGdld2F5aHViKV0oaHR0cHM6Ly9naXRodWIuY29tL0p1c3RlZGxldi9icmlkZ2V3YXlodWIvaXNzdWVzKQoKPC9kaXY+CgojIyDwn5OLIEFib3V0CgpfX0JyaWRnZVdheSBIdWJfXyBpdCdzIGFuICpBUEkgR2F0ZXdheSogZm9yIGVhc3kgbGF1bmNoIGFuZCB1c2luZywgYmFzZWQgb24gdGhlIFNwcmluZyBmcmFtZXdvcmsgNiwKa2V5Y2xvYWsgYXMgYSBzZWN1cml0eSBsYXllciBhbmQgZXVyZWthIGNsaWVudCBmb3IgcmVnaXN0cmF0aW9uIGluIHRoZSBzZXJ2aWNlIGRpc2NvdmVyeSwgZXRjLgpZb3UgY2FuIHNlZSB0aGUgYWxsIGRlcGVuZGVuY2llcyBbaGVyZV0ocG9tLnhtbCkKCiMjIOKaoO+4jyBSZXF1aXJlbWVudHMKCkJlZm9yZSBydW5uaW5nIHRoZSBhcHAgeW91IG5lZWQgdG8gY29uZmlndXJlIHRoZSBuZXh0IHNlcnZpY2VzIHRoYXQgZGVwZW5kcyBvbjoKCi0gS2V5Y2xvYWsKLSBEQiBmb3IgS2V5Y2xvYWsgaWYgbmVlZGVkCi0gRXVyZWthIFNlcnZlciwgbXkgW3NvbHV0aW9uXShodHRwczovL2dpdGh1Yi5jb20vSnVzdGVkbGV2L3NpbXBsZS1ldXJla2Etc2VydmVyKQoKIyMg4pa277iPIFJ1bgoKIyMjIPCfm6DvuI8gSW50ZWxsaWoKCkNsb25lIHRoZSByZXBvc2l0b3J5IHVzaW5nIGBnaXQgY2xvbmUgaHR0cHM6Ly9naXRodWIuY29tL0p1c3RlZGxldi9icmlkZ2V3YXlodWIuZ2l0YCBhbmQgYWZ0ZXIgdGhhdCBydW4gdGhlIGFwcCBsb2NhbCwKeW91IGNhbiB1c2UgdGhlIHNpbXBsZSBbcnVuIGNvbmZpZ3VyYXRpb25dKC5ydW4lMkZEZWZhdWx0LnJ1bi54bWwpLCB0aGF0IGJhc2VkIG9uIFsuZW52XSguZW52KQphbmQgW2p2bSBvcHRpb25zXSgudm1vcHRpb25zKSwgbWFrZSBzdXJlIHRoYXQgdGhlIHNlcnZpY2UgcmVnaXN0cnkgKGV1cmVrYSBzZXJ2aWNlKSBhbHJlYWR5IHN0YXJ0ZWQKb3IgZGlzYWJsZSB0aGUgZGVwZW5kZW5jeSBpbiBbcG9tLnhtbF0ocG9tLnhtbCkKCiMjIyDwn5qiIERvY2tlcgoKSSBoYXZlIGEgcmVwb3NpdG9yeSBvbiBbRG9ja2VyIEh1Yl0oaHR0cHM6Ly9odWIuZG9ja2VyLmNvbS9yZXBvc2l0b3J5L2RvY2tlci9qdXN0ZWRsZXYvYnJpZGdld2F5aHViL2dlbmVyYWwpCgojIyMg8J+Xgu+4jyBEb2NrZXIgY29tcG9zZQoKU2ltcGxlIGNvbW1hbmQgdG8gcnVuIHRoZSBjb250YWluZXI6IGBkb2NrZXIgY29tcG9zZSB1cCAtZCAtLWJ1aWxkYAoKVGhlIGZ1bGwgY29tcG9zZS55YW1sIHRoYXQgSSBwZXJzb25hbGx5IHVzZQoKYGBgeWFtbApuYW1lOiBqdXN0ZWRsZXYtbWljcm9zZXJ2aWNlCnNlcnZpY2VzOgogIGJyaWRnZXdheWh1YjoKICAgIGNvbnRhaW5lcl9uYW1lOiBicmlkZ2V3YXlodWIKICAgIGltYWdlOiBqdXN0ZWRsZXYvYnJpZGdld2F5aHViOjAuMC4xLVNOQVBTSE9UCiAgICBidWlsZDoKICAgICAgY29udGV4dDogLgogICAgZW52aXJvbm1lbnQ6CiAgICAgIFNFUlZJQ0VfUkVHSVNUUlk6IGh0dHA6Ly97ZXhhbXBsZX06e2V4YW1wbGV9QHNlcnZpY2UtZGlzY292ZXJ5Ojg3NjEvZXVyZWthCiAgICAgIE9SSUdJTlM6IGh0dHA6Ly9zZXJ2aWNlLWRpc2NvdmVyeTo4NzYxLGh0dHA6Ly9sb2NhbGhvc3Q6ODc2MSxodHRwOi8vbG9jYWxob3N0OjMwMDAKICAgICAgVVNFUk5BTUU6ICJ7ZXhhbXBsZX0iCiAgICAgIFBBU1NXT1JEOiAie2V4YW1wbGV9IgogICAgICBST0xFUzogYWRtaW4sdXNlcixlZGl0b3Isb3duZXIKICAgICAgS0VZQ0xPQUtfSE9TVDogaHR0cDovL3Nzbzo5MzIxCiAgICAgIEtFWUNMT0FLX1JFQUxNOiAie2V4YW1wbGV9IgogICAgICBLRVlDTE9BS19JU1NVRVJfVVJJOiAke0tFWUNMT0FLX0hPU1R9L3JlYWxtcy8ke0tFWUNMT0FLX1JFQUxNfQogICAgICBLRVlDTE9BS19KV0tTX1VSSTogJHtLRVlDTE9BS19JU1NVRVJfVVJJfS9wcm90b2NvbC9vcGVuaWQtY29ubmVjdC9jZXJ0cwogICAgICBLRVlDTE9BS19UT0tFTl9FTkRQT0lOVDogJHtLRVlDTE9BS19JU1NVRVJfVVJJfS9wcm90b2NvbC9vcGVuaWQtY29ubmVjdC90b2tlbgogICAgICBLRVlDTE9BS19JTlRST1NQRUNUSU9OX0VORFBPSU5UOiAke0tFWUNMT0FLX0lTU1VFUl9VUkl9L3Byb3RvY29sL29wZW5pZC1jb25uZWN0L3Rva2VuL2ludHJvc3BlY3QKICAgICAgS0VZQ0xPQUtfQ0xJRU5UX0lEOiAie2V4YW1wbGV9IgogICAgICBLRVlDTE9BS19DTElFTlRfU0VDUkVUOiAie2V4YW1wbGV9IgogICAgcG9ydHM6CiAgICAgIC0gODEyMzo4MTIzCiAgICBkZXBlbmRzX29uOgogICAgICAtIHNzbwogICAgICAtIHNlcnZpY2UtZGlzY292ZXJ5CgogICMgU2VydmljZSBkaXNjb3ZlcnkKICBzZXJ2aWNlLWRpc2NvdmVyeToKICAgIGNvbnRhaW5lcl9uYW1lOiBzZXJ2aWNlLWRpc2NvdmVyeQogICAgaW1hZ2U6IGp1c3RlZGxldi9zaW1wbGUtZXVyZWthLXNlcnZlcjoxLjAuMC1TTkFQU0hPVAogICAgZW52aXJvbm1lbnQ6CiAgICAgIFVTRVJOQU1FOiAie2V4YW1wbGV9IgogICAgICBQQVNTV09SRDogIntleGFtcGxlfSIKICAgIHBvcnRzOgogICAgICAtIDg3NjE6ODc2MQoKICAjIFNTTyBzZXJ2aWNlIChrZXljbG9haykKICBzc286CiAgICBjb250YWluZXJfbmFtZToga2V5Y2xvYWsKICAgIGltYWdlOiBxdWF5LmlvL2tleWNsb2FrL2tleWNsb2FrOjI0LjAuMgogICAgY29tbWFuZDogWyAic3RhcnQtZGV2IiwgIi0taHR0cC1wb3J0PTkzMjEiIF0KICAgIGVudmlyb25tZW50OgogICAgICBLRVlDTE9BS19BRE1JTjogIntleGFtcGxlfSIKICAgICAgS0VZQ0xPQUtfQURNSU5fUEFTU1dPUkQ6ICJ7ZXhhbXBsZX0iCiAgICAgIEtDX0hFQUxUSF9FTkFCTEVEOiB0cnVlCiAgICAgIEtDX0hPU1ROQU1FOiBsb2NhbGhvc3QKICAgICAgS0NfREI6IHBvc3RncmVzCiAgICAgIEtDX0RCX1VSTDogamRiYzpwb3N0Z3Jlc3FsOi8vcG9zdGdyZXM6NTQzMi97ZXhhbXBsZX0KICAgICAgS0NfREJfVVNFUk5BTUU6ICJ7ZXhhbXBsZX0iCiAgICAgIEtDX0RCX1BBU1NXT1JEOiAie2V4YW1wbGV9IgogICAgICBLQ19EQl9TQ0hFTUE6IGtleWNsb2FrCiAgICBkZXBlbmRzX29uOgogICAgICAtIHBvc3RncmVzCiAgICBwb3J0czoKICAgICAgLSA5MzIxOjkzMjEKCiAgIyBQb3N0Z3JlcyBEQgogIHBvc3RncmVzOgogICAgY29udGFpbmVyX25hbWU6IHBvc3RncmVzCiAgICBpbWFnZTogcG9zdGdyZXM6MTYuMi1hbHBpbmUKICAgIGVudmlyb25tZW50OgogICAgICBQT1NUR1JFU19EQjogIntleGFtcGxlfSIKICAgICAgUE9TVEdSRVNfVVNFUjogIntleGFtcGxlfSIKICAgICAgUE9TVEdSRVNfUEFTU1dPUkQ6ICJ7ZXhhbXBsZX0iCiAgICB2b2x1bWVzOgogICAgICAtIGRiLWRhdGE6L3Zhci9saWIvcG9zdGdyZXNxbC9kYXRhCiAgICBwb3J0czoKICAgICAgLSA1NDMyOjU0MzIKICAgIGhlYWx0aGNoZWNrOgogICAgICB0ZXN0OiBbICJDTUQiLCAicGdfaXNyZWFkeSIsICItVSB7ZXhhbXBsZX0iLCAiLWQiIF0KICAgICAgaW50ZXJ2YWw6IDE1cwogICAgICB0aW1lb3V0OiAxMHMKICAgICAgcmV0cmllczogNQogICAgICBzdGFydF9wZXJpb2Q6IDEycwogICAgcmVzdGFydDogdW5sZXNzLXN0b3BwZWQKICAgIGRlcGxveToKICAgICAgcmVzb3VyY2VzOgogICAgICAgIGxpbWl0czoKICAgICAgICAgIGNwdXM6ICIxIgogICAgICAgICAgbWVtb3J5OiAyNTBNQgoKdm9sdW1lczoKICBkYi1kYXRhOgpgYGAK - readmeEtag: '"962d3b41de68da4607217fae2a9f7feb684c0015c20fe5984569b5aed17bf998"' - readmeLastModified: Fri, 19 Apr 2024 07:48:03 GMT + PGRpdiBpZD0iaGVhZGVyIiBhbGlnbj0iY2VudGVyIj4KICAgIDxoMT5CcmlkZ2VXYXkgSHViPC9oMT4KICAgIDxoMz7wn6exIEFQSSBHYXRld2F5PC9oMz4KPC9kaXY+Cgo8ZGl2IGlkPSJiYWRnZXMiIGFsaWduPSJjZW50ZXIiPgoKWyFbbGFuZ3VhZ2VdKGh0dHBzOi8vaW1nLnNoaWVsZHMuaW8vYmFkZ2UvSmF2YSUyMDE3LWU2ODkyZSldKGh0dHBzOi8vZ2l0aHViLmNvbS9KdXN0ZWRsZXYvYnJpZGdld2F5aHViKQpbIVtmcmFtZXdvcmtdKGh0dHBzOi8vaW1nLnNoaWVsZHMuaW8vYmFkZ2UvU3ByaW5nJTIwRnJhbWV3b3JrJTIwNi02Y2I1MmQpXShodHRwczovL2dpdGh1Yi5jb20vSnVzdGVkbGV2L2JyaWRnZXdheWh1YikKWyFbZnJhbWV3b3JrXShodHRwczovL2ltZy5zaGllbGRzLmlvL2JhZGdlL1NwcmluZyUyMEJvb3QlMjAzLTZjYjUyZCldKGh0dHBzOi8vZ2l0aHViLmNvbS9KdXN0ZWRsZXYvYnJpZGdld2F5aHViKQpbIVtsaWNlbnNlXShodHRwczovL2ltZy5zaGllbGRzLmlvL2dpdGh1Yi9saWNlbnNlL0p1c3RlZGxldi9icmlkZ2V3YXlodWIpXShodHRwczovL2dpdGh1Yi5jb20vSnVzdGVkbGV2L2JyaWRnZXdheWh1YikKWyFbc3RhcnNdKGh0dHBzOi8vaW1nLnNoaWVsZHMuaW8vZ2l0aHViL3N0YXJzL0p1c3RlZGxldi9icmlkZ2V3YXlodWIpXShodHRwczovL2dpdGh1Yi5jb20vSnVzdGVkbGV2L2JyaWRnZXdheWh1Yi9zdGFyKQpbIVtpc3N1ZXNdKGh0dHBzOi8vaW1nLnNoaWVsZHMuaW8vZ2l0aHViL2lzc3Vlcy9KdXN0ZWRsZXYvYnJpZGdld2F5aHViKV0oaHR0cHM6Ly9naXRodWIuY29tL0p1c3RlZGxldi9icmlkZ2V3YXlodWIvaXNzdWVzKQoKPC9kaXY+CgojIyDwn5OLIEFib3V0CgpfX0JyaWRnZVdheSBIdWJfXyBpdCdzIGFuICpBUEkgR2F0ZXdheSogZm9yIGVhc3kgbGF1bmNoIGFuZCB1c2luZywgYmFzZWQgb24gdGhlIFNwcmluZyBmcmFtZXdvcmsgNiwKa2V5Y2xvYWsgYXMgYSBzZWN1cml0eSBsYXllciBhbmQgZXVyZWthIGNsaWVudCBmb3IgcmVnaXN0cmF0aW9uIGluIHRoZSBzZXJ2aWNlIGRpc2NvdmVyeSwgZXRjLgpZb3UgY2FuIHNlZSB0aGUgYWxsIGRlcGVuZGVuY2llcyBbaGVyZV0oLi4vcG9tLnhtbCkKCiMjIOKaoO+4jyBSZXF1aXJlbWVudHMKCkJlZm9yZSBydW5uaW5nIHRoZSBhcHAgeW91IG5lZWQgdG8gY29uZmlndXJlIHRoZSBuZXh0IHNlcnZpY2VzIHRoYXQgZGVwZW5kcyBvbjoKCi0gS2V5Y2xvYWsKLSBEQiBmb3IgS2V5Y2xvYWsgaWYgbmVlZGVkCi0gRXVyZWthIFNlcnZlciwgbXkgW3NvbHV0aW9uXShodHRwczovL2dpdGh1Yi5jb20vSnVzdGVkbGV2L3NpbXBsZS1ldXJla2Etc2VydmVyKQoKIyMg4pa277iPIFJ1bgoKIyMjIPCfm6DvuI8gSW50ZWxsaWoKCkNsb25lIHRoZSByZXBvc2l0b3J5IHVzaW5nIGBnaXQgY2xvbmUgaHR0cHM6Ly9naXRodWIuY29tL0p1c3RlZGxldi9icmlkZ2V3YXlodWIuZ2l0YCBhbmQgYWZ0ZXIgdGhhdCBydW4gdGhlIGFwcCBsb2NhbCwKeW91IGNhbiB1c2UgdGhlIHNpbXBsZSBbcnVuIGNvbmZpZ3VyYXRpb25dKC5ydW4lMkZEZWZhdWx0LnJ1bi54bWwpLCB0aGF0IGJhc2VkIG9uIFsuZW52XSguLi8uZW52KQphbmQgW2p2bSBvcHRpb25zXSguLi8udm1vcHRpb25zKSwgbWFrZSBzdXJlIHRoYXQgdGhlIHNlcnZpY2UgcmVnaXN0cnkgKGV1cmVrYSBzZXJ2aWNlKSBhbHJlYWR5IHN0YXJ0ZWQKb3IgZGlzYWJsZSB0aGUgZGVwZW5kZW5jeSBpbiBbcG9tLnhtbF0oLi4vcG9tLnhtbCkKCiMjIyDwn5qiIERvY2tlcgoKSSBoYXZlIGEgcmVwb3NpdG9yeSBvbiBbRG9ja2VyIEh1Yl0oaHR0cHM6Ly9odWIuZG9ja2VyLmNvbS9yZXBvc2l0b3J5L2RvY2tlci9qdXN0ZWRsZXYvYnJpZGdld2F5aHViL2dlbmVyYWwpCgojIyMg8J+Xgu+4jyBEb2NrZXIgY29tcG9zZQoKU2ltcGxlIGNvbW1hbmQgdG8gcnVuIHRoZSBjb250YWluZXI6IGBkb2NrZXIgY29tcG9zZSB1cCAtZCAtLWJ1aWxkYAoKVGhlIGZ1bGwgY29tcG9zZS55YW1sIHRoYXQgSSBwZXJzb25hbGx5IHVzZQoKYGBgeWFtbApuYW1lOiBqdXN0ZWRsZXYtbWljcm9zZXJ2aWNlCnNlcnZpY2VzOgogIGJyaWRnZXdheWh1YjoKICAgIGNvbnRhaW5lcl9uYW1lOiBicmlkZ2V3YXlodWIKICAgIGltYWdlOiBqdXN0ZWRsZXYvYnJpZGdld2F5aHViOjAuMC4xLVNOQVBTSE9UCiAgICBidWlsZDoKICAgICAgY29udGV4dDogLi4KICAgIGVudmlyb25tZW50OgogICAgICBTRVJWSUNFX1JFR0lTVFJZOiBodHRwOi8ve2V4YW1wbGV9OntleGFtcGxlfUBzZXJ2aWNlLWRpc2NvdmVyeTo4NzYxL2V1cmVrYQogICAgICBPUklHSU5TOiBodHRwOi8vc2VydmljZS1kaXNjb3Zlcnk6ODc2MSxodHRwOi8vbG9jYWxob3N0Ojg3NjEsaHR0cDovL2xvY2FsaG9zdDozMDAwCiAgICAgIFVTRVJOQU1FOiAie2V4YW1wbGV9IgogICAgICBQQVNTV09SRDogIntleGFtcGxlfSIKICAgICAgUk9MRVM6IGFkbWluLHVzZXIsZWRpdG9yLG93bmVyCiAgICAgIEtFWUNMT0FLX0hPU1Q6IGh0dHA6Ly9zc286OTMyMQogICAgICBLRVlDTE9BS19SRUFMTTogIntleGFtcGxlfSIKICAgICAgS0VZQ0xPQUtfSVNTVUVSX1VSSTogJHtLRVlDTE9BS19IT1NUfS9yZWFsbXMvJHtLRVlDTE9BS19SRUFMTX0KICAgICAgS0VZQ0xPQUtfSldLU19VUkk6ICR7S0VZQ0xPQUtfSVNTVUVSX1VSSX0vcHJvdG9jb2wvb3BlbmlkLWNvbm5lY3QvY2VydHMKICAgICAgS0VZQ0xPQUtfVE9LRU5fRU5EUE9JTlQ6ICR7S0VZQ0xPQUtfSVNTVUVSX1VSSX0vcHJvdG9jb2wvb3BlbmlkLWNvbm5lY3QvdG9rZW4KICAgICAgS0VZQ0xPQUtfSU5UUk9TUEVDVElPTl9FTkRQT0lOVDogJHtLRVlDTE9BS19JU1NVRVJfVVJJfS9wcm90b2NvbC9vcGVuaWQtY29ubmVjdC90b2tlbi9pbnRyb3NwZWN0CiAgICAgIEtFWUNMT0FLX0NMSUVOVF9JRDogIntleGFtcGxlfSIKICAgICAgS0VZQ0xPQUtfQ0xJRU5UX1NFQ1JFVDogIntleGFtcGxlfSIKICAgIHBvcnRzOgogICAgICAtIDgxMjM6ODEyMwogICAgZGVwZW5kc19vbjoKICAgICAgLSBzc28KICAgICAgLSBzZXJ2aWNlLWRpc2NvdmVyeQoKICAjIFNlcnZpY2UgZGlzY292ZXJ5CiAgc2VydmljZS1kaXNjb3Zlcnk6CiAgICBjb250YWluZXJfbmFtZTogc2VydmljZS1kaXNjb3ZlcnkKICAgIGltYWdlOiBqdXN0ZWRsZXYvc2ltcGxlLWV1cmVrYS1zZXJ2ZXI6MS4wLjAtU05BUFNIT1QKICAgIGVudmlyb25tZW50OgogICAgICBVU0VSTkFNRTogIntleGFtcGxlfSIKICAgICAgUEFTU1dPUkQ6ICJ7ZXhhbXBsZX0iCiAgICBwb3J0czoKICAgICAgLSA4NzYxOjg3NjEKCiAgIyBTU08gc2VydmljZSAoa2V5Y2xvYWspCiAgc3NvOgogICAgY29udGFpbmVyX25hbWU6IGtleWNsb2FrCiAgICBpbWFnZTogcXVheS5pby9rZXljbG9hay9rZXljbG9hazoyNC4wLjIKICAgIGNvbW1hbmQ6IFsgInN0YXJ0LWRldiIsICItLWh0dHAtcG9ydD05MzIxIiBdCiAgICBlbnZpcm9ubWVudDoKICAgICAgS0VZQ0xPQUtfQURNSU46ICJ7ZXhhbXBsZX0iCiAgICAgIEtFWUNMT0FLX0FETUlOX1BBU1NXT1JEOiAie2V4YW1wbGV9IgogICAgICBLQ19IRUFMVEhfRU5BQkxFRDogdHJ1ZQogICAgICBLQ19IT1NUTkFNRTogbG9jYWxob3N0CiAgICAgIEtDX0RCOiBwb3N0Z3JlcwogICAgICBLQ19EQl9VUkw6IGpkYmM6cG9zdGdyZXNxbDovL3Bvc3RncmVzOjU0MzIve2V4YW1wbGV9CiAgICAgIEtDX0RCX1VTRVJOQU1FOiAie2V4YW1wbGV9IgogICAgICBLQ19EQl9QQVNTV09SRDogIntleGFtcGxlfSIKICAgICAgS0NfREJfU0NIRU1BOiBrZXljbG9hawogICAgZGVwZW5kc19vbjoKICAgICAgLSBwb3N0Z3JlcwogICAgcG9ydHM6CiAgICAgIC0gOTMyMTo5MzIxCgogICMgUG9zdGdyZXMgREIKICBwb3N0Z3JlczoKICAgIGNvbnRhaW5lcl9uYW1lOiBwb3N0Z3JlcwogICAgaW1hZ2U6IHBvc3RncmVzOjE2LjItYWxwaW5lCiAgICBlbnZpcm9ubWVudDoKICAgICAgUE9TVEdSRVNfREI6ICJ7ZXhhbXBsZX0iCiAgICAgIFBPU1RHUkVTX1VTRVI6ICJ7ZXhhbXBsZX0iCiAgICAgIFBPU1RHUkVTX1BBU1NXT1JEOiAie2V4YW1wbGV9IgogICAgdm9sdW1lczoKICAgICAgLSBkYi1kYXRhOi92YXIvbGliL3Bvc3RncmVzcWwvZGF0YQogICAgcG9ydHM6CiAgICAgIC0gNTQzMjo1NDMyCiAgICBoZWFsdGhjaGVjazoKICAgICAgdGVzdDogWyAiQ01EIiwgInBnX2lzcmVhZHkiLCAiLVUge2V4YW1wbGV9IiwgIi1kIiBdCiAgICAgIGludGVydmFsOiAxNXMKICAgICAgdGltZW91dDogMTBzCiAgICAgIHJldHJpZXM6IDUKICAgICAgc3RhcnRfcGVyaW9kOiAxMnMKICAgIHJlc3RhcnQ6IHVubGVzcy1zdG9wcGVkCiAgICBkZXBsb3k6CiAgICAgIHJlc291cmNlczoKICAgICAgICBsaW1pdHM6CiAgICAgICAgICBjcHVzOiAiMSIKICAgICAgICAgIG1lbW9yeTogMjUwTUIKCnZvbHVtZXM6CiAgZGItZGF0YToKYGBgCg== + readmeEtag: '"f399a0f3f991eff60ccfe14da959e32ed483e4937a2165e2ca56e73fd1a0ce28"' + readmeLastModified: Fri, 12 Jul 2024 18:44:17 GMT repositoryId: 786112920 description: 🧱 API Gateway created: '2024-04-13T13:22:10Z' - updated: '2024-07-10T18:28:30Z' + updated: '2024-07-12T18:44:15Z' language: Java archived: false stars: 1 @@ -29399,8 +29399,8 @@ owner: justedlev logo: https://avatars.githubusercontent.com/u/59051661?v=4 license: Apache-2.0 - repoEtag: '"4025798477b600958f96bbbb13ed3ad0a0133984834168f8d624e39c33c35da7"' - repoLastModified: Wed, 10 Jul 2024 18:28:30 GMT + repoEtag: '"d886a79529ed32aeb2831af18ab038832d6776caffdcd796af07d82e3477f96f"' + repoLastModified: Fri, 12 Jul 2024 18:44:15 GMT category: Server Implementations foundInMaster: true - source: openapi3 tags @@ -30921,7 +30921,7 @@ forks: 0 owner: CenterEdge logo: https://avatars.githubusercontent.com/u/7118733?v=4 - repoEtag: '"4abdeda1e2c605cf796a87f1824ad482d7df03a227b9c409cbac25b830f9a372"' + repoEtag: '"4f1ef5d835c4d8d7dc0195c0338b280085938f1ad567cc46339c3a0a94cf808d"' repoLastModified: Fri, 21 Jan 2022 13:17:48 GMT foundInMaster: true category: Server @@ -31663,7 +31663,7 @@ Hackolade(https://hackolade.com) plugin for AWS EventBridge Schema Registry created: '2020-06-13T07:58:44Z' - updated: '2024-07-03T11:38:17Z' + updated: '2024-07-12T12:40:59Z' language: JavaScript archived: false stars: 0 @@ -31672,8 +31672,8 @@ owner: hackolade logo: https://avatars.githubusercontent.com/u/20265734?v=4 license: NOASSERTION - repoEtag: '"3abaf2c1685e099fc026f7a76f6ef1a9b6fb00d2dfd2e5adbceafc1c80faf907"' - repoLastModified: Wed, 03 Jul 2024 11:38:17 GMT + repoEtag: '"21fe10f6b152098ab2524a2068837a8e2720ff6e116b49f0847ce67f89a66032"' + repoLastModified: Fri, 12 Jul 2024 12:40:59 GMT foundInMaster: true category: - Server @@ -31693,7 +31693,7 @@ REST API related to movies, series and its reviews created with Rust and Actix Web. created: '2024-06-04T18:00:24Z' - updated: '2024-07-10T17:57:32Z' + updated: '2024-07-12T16:56:57Z' language: Rust archived: false stars: 0 @@ -31702,8 +31702,8 @@ owner: MCPikon logo: https://avatars.githubusercontent.com/u/82212139?v=4 license: Apache-2.0 - repoEtag: '"ab948a637d58d7771971eb38f232ae65ad73d48653237f577acf35abf261e1d1"' - repoLastModified: Wed, 10 Jul 2024 17:57:32 GMT + repoEtag: '"3fe888d486f836b14f967f3d6d649d061a60bd449a9469a9c9910f94c500e5a1"' + repoLastModified: Fri, 12 Jul 2024 16:56:57 GMT category: SDK foundInMaster: true - source: openapi3 tags @@ -32051,22 +32051,22 @@ id: adf589eca87efb4e4ec9d2bc3507f096 repositoryMetadata: base64Readme: >- - LSBbRXRoZXJzY2FuLmlvIEFQSSBTcGVjaWZpY2F0aW9uIGluIE9wZW5BUEkgMy4xIEZvcm1hdF0oI2V0aGVyc2NhbmlvLWFwaS1zcGVjaWZpY2F0aW9uLWluLW9wZW5hcGktMzEtZm9ybWF0KQogIC0gW1doYXQgaXMgaXQ/XSgjd2hhdC1pcy1pdCkKICAtIFtXaGF0IGlzIGl0IGZvcj9dKCN3aGF0LWlzLWl0LWZvcikKICAtIFtJcyB0aGUgRXRoZXJzY2FuIEFQSSBjb21wbGV0ZWx5IGRlc2NyaWJlZCBpbiB0aGUgc3BlY2lmaWNhdGlvbj9dKCNpcy10aGUtZXRoZXJzY2FuLWFwaS1jb21wbGV0ZWx5LWRlc2NyaWJlZC1pbi10aGUtc3BlY2lmaWNhdGlvbikKICAgIC0gW0FjY291bnRzXSgjYWNjb3VudHMpCiAgICAtIFtDb250cmFjdHNdKCNjb250cmFjdHMpCiAgICAtIFtUcmFuc2FjdGlvbnNdKCN0cmFuc2FjdGlvbnMpCiAgICAtIFtCbG9ja3NdKCNibG9ja3MpCiAgICAtIFtMb2dzXSgjbG9ncykKICAgIC0gW0dldGgvUGFyaXR5IFByb3h5XSgjZ2V0aHBhcml0eS1wcm94eSkKICAgIC0gW1Rva2Vuc10oI3Rva2VucykKICAgIC0gW0dhcyBUcmFja2VyXSgjZ2FzLXRyYWNrZXIpCiAgICAtIFtTdGF0c10oI3N0YXRzKQogIC0gW0RyYXdiYWNrc10oI2RyYXdiYWNrcykKICAgIC0gW1BhdGhzIGNvbnRhaW4gcXVlcnkgZWxlbWVudHNdKCNwYXRocy1jb250YWluLXF1ZXJ5LWVsZW1lbnRzKQogICAgLSBbVGhlcmUgYXJlIG5vIDR4eCByZXNwb25zZXMgZGVzY3JpYmVkXSgjdGhlcmUtYXJlLW5vLTR4eC1yZXNwb25zZXMtZGVzY3JpYmVkKQogICAgLSBbVGhlIHRhZy1kZXNjcmlwdGlvbiBsaW50ZXIgcnVsZSBpcyBkaXNhYmxlZC5dKCN0aGUtdGFnLWRlc2NyaXB0aW9uLWxpbnRlci1ydWxlLWlzLWRpc2FibGVkKQogIC0gW0ZvciBkZXZlbG9wZXJzXSgjZm9yLWRldmVsb3BlcnMpCgojIEV0aGVyc2Nhbi5pbyBBUEkgU3BlY2lmaWNhdGlvbiBpbiBPcGVuQVBJIDMuMSBGb3JtYXQKCiMjIFdoYXQgaXMgaXQ/CgoqKltUaGUgc3BlY2lmaWNhdGlvbl0oZXRoZXJzY2FuLW9wZW5hcGkzMS1idW5kbGVkLnltbCkqKiBpcyBhIFlBTUwgZmlsZSBpbiBPcGVuQVBJIDMuMSBmb3JtYXQsIGJhc2VkIG9uIHRoZSBbRXRoZXJzY2FuIEFQSXMgZG9jdW1lbnRhdGlvbl0oaHR0cHM6Ly9kb2NzLmV0aGVyc2Nhbi5pby8pLgoKIyMgV2hhdCBpcyBpdCBmb3I/CgpUaGVyZSBhcmUgYSBudW1iZXIgb2YgRXRoZXJzY2FuIEFQSSBIVFRQLWNsaWVudHMgYXZhaWxhYmxlIGluIGRpZmZlcmVudCBsYW5ndWFnZXMsIGVhY2ggdmFyeWluZyBpbiBjb21wbGV0ZW5lc3MgYW5kIHVwZGF0ZSBmcmVxdWVuY3kuIFdpdGggdGhlIEFQSSBzcGVjaWZpY2F0aW9uLCB5b3UgY2FuIGdlbmVyYXRlIGFuIEFQSSBIVFRQLWNsaWVudCBpbiBhIHN1cHBvcnRlZCBsYW5ndWFnZSB1c2luZyB2YXJpb3VzIGdlbmVyYXRvcnMuIEhlcmUgYXJlIGEgZmV3IGV4YW1wbGVzIG9mIHN1Y2ggZ2VuZXJhdG9yczogIAoKKiB0eXBlc2NyaXB0OiBbT3BlbmFwaS1UeXBlc2NyaXB0XShodHRwczovL2dpdGh1Yi5jb20vb3BlbmFwaS10cy9vcGVuYXBpLXR5cGVzY3JpcHQpLCBbT3J2YWxdKGh0dHBzOi8vZ2l0aHViLmNvbS9hbnltYW5pYXgvb3J2YWwpCiogbXVsdGlwbGUgbGFuZ3VhZ2VzOiBbT3BlbkFQSSBHZW5lcmF0b3JdKGh0dHBzOi8vZ2l0aHViLmNvbS9PcGVuQVBJVG9vbHMvb3BlbmFwaS1nZW5lcmF0b3IpLCBbU3dhZ2dlci1Db2RlZ2VuXShodHRwczovL2dpdGh1Yi5jb20vc3dhZ2dlci1hcGkvc3dhZ2dlci1jb2RlZ2VuKSwgW0tpb3RhXShodHRwczovL2dpdGh1Yi5jb20vbWljcm9zb2Z0L2tpb3RhKQoKIyMgSXMgdGhlIEV0aGVyc2NhbiBBUEkgY29tcGxldGVseSBkZXNjcmliZWQgaW4gdGhlIHNwZWNpZmljYXRpb24/CgpBbG1vc3QuIEFsbCByZXF1ZXN0cyBhcmUgZnVsbHkgZGVzY3JpYmVkLCBpbmNsdWRpbmcgKipQUk8qKiBlbmRwb2ludHMuIEhvd2V2ZXIsIHNvbWUgcmVzcG9uc2VzIGFyZSBvbmx5IHBhcnRpYWxseSBkZXNjcmliZWQ6CgojIyMgQWNjb3VudHMKfCBNb2R1bGUuQWN0aW9uIHwgSXMgcmVzcG9uc2UgZGVzY3JpYmVkPyB8CnwtLS18LS0tfAp8IGFjY291bnQuYmFsYW5jZSAgfCArIHwKfCBhY2NvdW50LmJhbGFuY2VtdWx0aSAgfCArIHwKfCBhY2NvdW50LnR4bGlzdCAgfCBwYXJ0aWFsbHkgfAp8IGFjY291bnQudHhsaXN0aW50ZXJuYWwgfCBwYXJ0aWFsbHkgfAp8IGFjY291bnQudG9rZW50eCB8IHBhcnRpYWxseSB8CnwgYWNjb3VudC50b2tlbm5mdHR4IHwgcGFydGlhbGx5IHwKfCBhY2NvdW50LnRva2VuMTE1NXR4IHwgcGFydGlhbGx5IHwKfCBhY2NvdW50LmdldG1pbmVkYmxvY2tzIHwgcGFydGlhbGx5IHwKfCBhY2NvdW50LnR4c0JlYWNvbldpdGhkcmF3YWwgfCBwYXJ0aWFsbHkgfAp8IGFjY291bnQuYmFsYW5jZWhpc3RvcnkgfCArIHwKIyMjIENvbnRyYWN0cwp8IE1vZHVsZS5BY3Rpb24gfCBSZXNwb25zZSBkZXNjcmliZWQgfAp8LS0tfC0tLXwKfCBjb250cmFjdC5nZXRhYmkgfCArIHwKfCBjb250cmFjdC5nZXRzb3VyY2Vjb2RlIHwgcGFydGlhbGx5IHwKfCBjb250cmFjdC5nZXRjb250cmFjdGNyZWF0aW9uIHwgKyB8CnwgY29udHJhY3QudmVyaWZ5c291cmNlY29kZSB8ICsgfAp8IGNvbnRyYWN0LmNoZWNrdmVyaWZ5c3RhdHVzIHwgKyB8CiMjIyBUcmFuc2FjdGlvbnMKfCBNb2R1bGUuQWN0aW9uIHwgUmVzcG9uc2UgZGVzY3JpYmVkIHwKfC0tLXwtLS18CnwgdHJhbnNhY3Rpb24uZ2V0c3RhdHVzIHwgcGFydGlhbGx5IHwKfCB0cmFuc2FjdGlvbi5nZXR0eHJlY2VpcHRzdGF0dXMgfCBwYXJ0aWFsbHkgfAojIyMgQmxvY2tzCnwgTW9kdWxlLkFjdGlvbiB8IFJlc3BvbnNlIGRlc2NyaWJlZCB8CnwtLS18LS0tfAp8IGJsb2NrLmdldGJsb2NrcmV3YXJkICAgICB8IHBhcnRpYWxseSB8CnwgYmxvY2suZ2V0YmxvY2tjb3VudGRvd24gIHwgKyB8CnwgYmxvY2suZ2V0YmxvY2tub2J5dGltZSAgIHwgKyB8Cnwgc3RhdHMuZGFpbHlhdmdibG9ja3NpemUgIHwgKyB8Cnwgc3RhdHMuZGFpbHlibGtjb3VudCAgICAgIHwgKyB8Cnwgc3RhdHMuZGFpbHlibG9ja3Jld2FyZHMgIHwgKyB8Cnwgc3RhdHMuZGFpbHlhdmdibG9ja3RpbWUgIHwgKyB8Cnwgc3RhdHMuZGFpbHl1bmNsZWJsa2NvdW50IHwgKyB8CiMjIyBMb2dzCnwgTW9kdWxlLkFjdGlvbiB8IFJlc3BvbnNlIGRlc2NyaWJlZCB8CnwtLS18LS0tfAp8IGxvZ3MuZ2V0TG9ncyB8IHBhcnRpYWxseSB8CiMjIyBHZXRoL1Bhcml0eSBQcm94eQp8IE1vZHVsZS5BY3Rpb24gfCBSZXNwb25zZSBkZXNjcmliZWQgfAp8LS0tfC0tLXwKfCBwcm94eS5ldGhfYmxvY2tOdW1iZXIgfCArIHwKfCBwcm94eS5ldGhfZ2V0QmxvY2tCeU51bWJlciB8IHBhcnRpYWxseSB8CnwgcHJveHkuZXRoX2dldFVuY2xlQnlCbG9ja051bWJlckFuZEluZGV4IHwgcGFydGlhbGx5IHwKfCBwcm94eS5ldGhfZ2V0QmxvY2tUcmFuc2FjdGlvbkNvdW50QnlOdW1iZXIgfCArIHwKfCBwcm94eS5ldGhfZ2V0VHJhbnNhY3Rpb25CeUhhc2ggfCBwYXJ0aWFsbHkgfAp8IHByb3h5LmV0aF9nZXRUcmFuc2FjdGlvbkJ5QmxvY2tOdW1iZXJBbmRJbmRleCB8IHBhcnRpYWxseSB8CnwgcHJveHkuZXRoX2dldFRyYW5zYWN0aW9uQ291bnQgfCArIHwKfCBwcm94eS5ldGhfc2VuZFJhd1RyYW5zYWN0aW9uIHwgKyB8CnwgcHJveHkuZXRoX2dldFRyYW5zYWN0aW9uUmVjZWlwdCB8ICsgfAp8IHByb3h5LmV0aF9jYWxsIHwgKyB8CnwgcHJveHkuZXRoX2dldENvZGUgfCArIHwKfCBwcm94eS5ldGhfZ2V0U3RvcmFnZUF0IHwgKyB8CnwgcHJveHkuZXRoX2VzdGltYXRlR2FzIHwgKyB8CiMjIyBUb2tlbnMKfCBNb2R1bGUuQWN0aW9uIHwgUmVzcG9uc2UgZGVzY3JpYmVkIHwKfC0tLXwtLS18Cnwgc3RhdHMudG9rZW5zdXBwbHkgICAgICAgICAgICAgICAgfCArIHwKfCBhY2NvdW50LnRva2VuYmFsYW5jZSAgICAgICAgICAgICB8ICsgfAp8IHN0YXRzLnRva2Vuc3VwcGx5aGlzdG9yeSAgICAgICAgIHwgKyB8CnwgYWNjb3VudC50b2tlbmJhbGFuY2VoaXN0b3J5ICAgICAgfCArIHwKfCB0b2tlbi50b2tlbmhvbGRlcmxpc3QgICAgICAgICAgICB8ICsgfAp8IHRva2VuLnRva2VuaW5mbyAgICAgICAgICAgICAgICAgIHwgKyB8CnwgYWNjb3VudC5hZGRyZXNzdG9rZW5iYWxhbmNlICAgICAgfCArIHwKfCBhY2NvdW50LmFkZHJlc3N0b2tlbm5mdGJhbGFuY2UgICB8ICsgfAp8IGFjY291bnQuYWRkcmVzc3Rva2VubmZ0aW52ZW50b3J5IHwgKyB8CgojIyMgR2FzIFRyYWNrZXIKfCBNb2R1bGUuQWN0aW9uIHwgUmVzcG9uc2UgZGVzY3JpYmVkIHwKfC0tLXwtLS18CnwgZ2FzdHJhY2tlci5nYXNlc3RpbWF0ZSB8ICsgfAp8IGdhc3RyYWNrZXIuZ2Fzb3JhY2xlICAgfCArIHwKfCBzdGF0cy5kYWlseWF2Z2dhc2xpbWl0IHwgKyB8Cnwgc3RhdHMuZGFpbHlnYXN1c2VkICAgICB8ICsgfAp8IHN0YXRzLmRhaWx5YXZnZ2FzcHJpY2UgfCArIHwKIyMjIFN0YXRzCnwgTW9kdWxlLkFjdGlvbiB8IFJlc3BvbnNlIGRlc2NyaWJlZCB8CnwtLS18LS0tfAp8IHN0YXRzLmV0aHN1cHBseSAgICAgICAgICAgICB8ICsgfAp8IHN0YXRzLmV0aHN1cHBseTIgICAgICAgICAgICB8ICsgfAp8IHN0YXRzLmV0aHByaWNlICAgICAgICAgICAgICB8ICsgfAp8IHN0YXRzLmNoYWluc2l6ZSAgICAgICAgICAgICB8ICsgfAp8IHN0YXRzLm5vZGVjb3VudCAgICAgICAgICAgICB8ICsgfAp8IHN0YXRzLmRhaWx5dHhuZmVlICAgICAgICAgICB8ICsgfAp8IHN0YXRzLmRhaWx5bmV3YWRkcmVzcyAgICAgICB8ICsgfAp8IHN0YXRzLmRhaWx5bmV0dXRpbGl6YXRpb24gICB8ICsgfAp8IHN0YXRzLmRhaWx5YXZnaGFzaHJhdGUgICAgICB8ICsgfAp8IHN0YXRzLmRhaWx5dHggICAgICAgICAgICAgICB8ICsgfAp8IHN0YXRzLmRhaWx5YXZnbmV0ZGlmZmljdWx0eSB8ICsgfAp8IHN0YXRzLmV0aGRhaWx5bWFya2V0Y2FwICAgICB8ICsgfAp8IHN0YXRzLmV0aGRhaWx5cHJpY2UgICAgICAgICB8ICsgfAoKIyMgRHJhd2JhY2tzCgojIyMgUGF0aHMgY29udGFpbiBxdWVyeSBlbGVtZW50cwoKQWxsIEV0aGVyc2NhbiBBUEkgZW5kcG9pbnQgVVJMcyBmb2xsb3cgdGhlIHBhdHRlcm4gYC4uLmV0aGVyc2Nhbi5pby9hcGk/bW9kdWxlPU1vZHVsZU5hbWUmYWN0aW9uPUFjdGlvbk5hbWUmLi4uYC4KCkhvd2V2ZXIsIGluIHRlcm1zIG9mIE9wZW5BUEkgMy4xLCBlbmRwb2ludCBwYXRocyBtdXN0IGJlIHVuaXF1ZS4gVG8gbWVldCB0aGlzIHJlcXVpcmVtZW50IHdoaWxlIHN0aWxsIGRpc3Rpbmd1aXNoaW5nIHBhdGggaXRlbXMsIEkgaGF2ZSBkZXNjcmliZWQgcGF0aHMgaW4gdGhlIHNwZWNpZmljYXRpb24gbGlrZSB0aGlzOgoKYGBgCnBhdGhzOgogIC8/YWNjb3VudC5iYWxhbmNlOgogICAgZ2V0OgogICAgLi4uCiAgLz9hY2NvdW50LmJhbGFuY2VtdWx0aToKICAgIGdldDoKICAgIC4uLgpgYGAKClRvIG1ha2UgdGhlIGxpbnRlciBpZ25vcmUgaXQsIEkgaGF2ZSB0byBkaXNhYmxlIFtwYXRoLW5vdC1pbmNsdWRlLXF1ZXJ5XShodHRwczovL3JlZG9jbHkuY29tL2RvY3MvY2xpL3J1bGVzL3BhdGgtbm90LWluY2x1ZGUtcXVlcnkpIHJ1bGUuCgojIyMgVGhlcmUgYXJlIG5vIDR4eCByZXNwb25zZXMgZGVzY3JpYmVkCgpUaGlzIGlzIGJlY2F1c2UgRXRoZXJzY2FuIEFQSSBkb2VzIG5vdCByZXR1cm4gc3VjaCByZXNwb25zZXMuIEFsbCByZXNwb25zZXMgaGF2ZSBhIDIwMC1PSyBjb2RlLiBUbyBtYWtlIHRoZSBsaW50ZXIgaWdub3JlIHRoaXMsIEkgaGF2ZSB0byBkaXNhYmxlIFtvcGVyYXRpb24tNHh4LXJlc3BvbnNlXShodHRwczovL3JlZG9jbHkuY29tL2RvY3MvY2xpL3J1bGVzL29wZXJhdGlvbi00eHgtcmVzcG9uc2UpIHJ1bGUuCgojIyMgVGhlIFt0YWctZGVzY3JpcHRpb25dKGh0dHBzOi8vcmVkb2NseS5jb20vZG9jcy9jbGkvcnVsZXMvdGFnLWRlc2NyaXB0aW9uKSBsaW50ZXIgcnVsZSBpcyBkaXNhYmxlZC4KCkFjY29yZGluZyB0byB0aGUgT0EzLjEgc3BlY2lmaWNhdGlvbiwgW3RhZ3NdKGh0dHBzOi8vc3BlYy5vcGVuYXBpcy5vcmcvb2FzL2xhdGVzdC5odG1sI3RhZy1vYmplY3QpIGFyZSBhbGxvd2VkIHRvIGhhdmUgbm8gZGVzY3JpcHRpb24uIEhvd2V2ZXIsIHRoZSBSZWRvYyBsaW50ZXIgYWN0aXZhdGVzIHRoaXMgcnVsZSBieSBkZWZhdWx0LCBzbyBJIG5lZWQgdG8gZGlzYWJsZSBpdC4KCiMjIEZvciBkZXZlbG9wZXJzCgpJc3N1ZXMgYW5kIHB1bGwgcmVxdWVzdHMgYXJlIHdlbGNvbWUuClVzZSB0aGlzIGF0IHlvdXIgb3duIHJpc2sgYW5kIHJlc3BvbnNpYmlsaXR5LiBQbGVhc2UgcmVzcGVjdCB0aGUgW1Rlcm1zIG9mIFNlcnZpY2VdKGh0dHBzOi8vZXRoZXJzY2FuLmlvL3Rlcm1zKSBvZiBFdGhlcnNjYW4uaW8u - readmeEtag: '"27b951c7ff75fdeddd89ecc6260cefabc3bbbea6411c840359d63eafd5b7e28c"' - readmeLastModified: Sun, 30 Jun 2024 09:36:31 GMT + LSBbRXRoZXJzY2FuLmlvIEFQSSBTcGVjaWZpY2F0aW9uIGluIE9wZW5BUEkgMy4xIEZvcm1hdF0oI2V0aGVyc2NhbmlvLWFwaS1zcGVjaWZpY2F0aW9uLWluLW9wZW5hcGktMzEtZm9ybWF0KQogIC0gW1doYXQgaXMgaXQ/XSgjd2hhdC1pcy1pdCkKICAtIFtXaGF0IGlzIGl0IGZvcj9dKCN3aGF0LWlzLWl0LWZvcikKICAtIFtJcyB0aGUgRXRoZXJzY2FuIEFQSSBjb21wbGV0ZWx5IGRlc2NyaWJlZCBpbiB0aGUgc3BlY2lmaWNhdGlvbj9dKCNpcy10aGUtZXRoZXJzY2FuLWFwaS1jb21wbGV0ZWx5LWRlc2NyaWJlZC1pbi10aGUtc3BlY2lmaWNhdGlvbikKICAgIC0gW0FjY291bnRzXSgjYWNjb3VudHMpCiAgICAtIFtDb250cmFjdHNdKCNjb250cmFjdHMpCiAgICAtIFtUcmFuc2FjdGlvbnNdKCN0cmFuc2FjdGlvbnMpCiAgICAtIFtCbG9ja3NdKCNibG9ja3MpCiAgICAtIFtMb2dzXSgjbG9ncykKICAgIC0gW0dldGgvUGFyaXR5IFByb3h5XSgjZ2V0aHBhcml0eS1wcm94eSkKICAgIC0gW1Rva2Vuc10oI3Rva2VucykKICAgIC0gW0dhcyBUcmFja2VyXSgjZ2FzLXRyYWNrZXIpCiAgICAtIFtTdGF0c10oI3N0YXRzKQogIC0gW0RyYXdiYWNrc10oI2RyYXdiYWNrcykKICAgIC0gW1BhdGhzIGNvbnRhaW4gcXVlcnkgZWxlbWVudHNdKCNwYXRocy1jb250YWluLXF1ZXJ5LWVsZW1lbnRzKQogICAgLSBbVGhlcmUgYXJlIG5vIDR4eCByZXNwb25zZXMgZGVzY3JpYmVkXSgjdGhlcmUtYXJlLW5vLTR4eC1yZXNwb25zZXMtZGVzY3JpYmVkKQogICAgLSBbVGhlIHRhZy1kZXNjcmlwdGlvbiBsaW50ZXIgcnVsZSBpcyBkaXNhYmxlZC5dKCN0aGUtdGFnLWRlc2NyaXB0aW9uLWxpbnRlci1ydWxlLWlzLWRpc2FibGVkKQogIC0gW0ZvciBkZXZlbG9wZXJzXSgjZm9yLWRldmVsb3BlcnMpCgojIEV0aGVyc2Nhbi5pbyBBUEkgU3BlY2lmaWNhdGlvbiBpbiBPcGVuQVBJIDMuMSBGb3JtYXQKCiMjIFdoYXQgaXMgaXQ/CgoqKltUaGUgc3BlY2lmaWNhdGlvbl0oZXRoZXJzY2FuLW9wZW5hcGkzMS1idW5kbGVkLnltbCkqKiBpcyBhIFlBTUwgZmlsZSBpbiBPcGVuQVBJIDMuMSBmb3JtYXQsIGJhc2VkIG9uIHRoZSBbRXRoZXJzY2FuIEFQSXMgZG9jdW1lbnRhdGlvbl0oaHR0cHM6Ly9kb2NzLmV0aGVyc2Nhbi5pby8pLgoKIyMgV2hhdCBpcyBpdCBmb3I/CgpUaGVyZSBhcmUgYSBudW1iZXIgb2YgRXRoZXJzY2FuIEFQSSBIVFRQLWNsaWVudHMgYXZhaWxhYmxlIGluIGRpZmZlcmVudCBsYW5ndWFnZXMsIGVhY2ggdmFyeWluZyBpbiBjb21wbGV0ZW5lc3MgYW5kIHVwZGF0ZSBmcmVxdWVuY3kuIFdpdGggdGhlIEFQSSBzcGVjaWZpY2F0aW9uLCB5b3UgY2FuIGdlbmVyYXRlIGFuIEFQSSBIVFRQLWNsaWVudCBpbiBhIHN1cHBvcnRlZCBsYW5ndWFnZSB1c2luZyB2YXJpb3VzIGdlbmVyYXRvcnMuIEhlcmUgYXJlIGEgZmV3IGV4YW1wbGVzIG9mIHN1Y2ggZ2VuZXJhdG9yczogIAoKKiB0eXBlc2NyaXB0OgogICogW09wZW5hcGktVHlwZXNjcmlwdF0oaHR0cHM6Ly9naXRodWIuY29tL29wZW5hcGktdHMvb3BlbmFwaS10eXBlc2NyaXB0KSwgc2VlIFtleGFtcGxlXSh0ZXN0cy9vcGVuYXBpLXRzL2ludGVncmF0aW9uL2FjY291bnQuYmFsYW5jZS50ZXN0LnRzKQogICogW09ydmFsXShodHRwczovL2dpdGh1Yi5jb20vYW55bWFuaWF4L29ydmFsKQoqIG11bHRpcGxlIGxhbmd1YWdlczogW09wZW5BUEkgR2VuZXJhdG9yXShodHRwczovL2dpdGh1Yi5jb20vT3BlbkFQSVRvb2xzL29wZW5hcGktZ2VuZXJhdG9yKSwgW1N3YWdnZXItQ29kZWdlbl0oaHR0cHM6Ly9naXRodWIuY29tL3N3YWdnZXItYXBpL3N3YWdnZXItY29kZWdlbiksIFtLaW90YV0oaHR0cHM6Ly9naXRodWIuY29tL21pY3Jvc29mdC9raW90YSkKCiMjIElzIHRoZSBFdGhlcnNjYW4gQVBJIGNvbXBsZXRlbHkgZGVzY3JpYmVkIGluIHRoZSBzcGVjaWZpY2F0aW9uPwoKQWxtb3N0LiBBbGwgcmVxdWVzdHMgYXJlIGZ1bGx5IGRlc2NyaWJlZCwgaW5jbHVkaW5nICoqUFJPKiogZW5kcG9pbnRzLiBIb3dldmVyLCBzb21lIHJlc3BvbnNlcyBhcmUgb25seSBwYXJ0aWFsbHkgZGVzY3JpYmVkOgoKIyMjIEFjY291bnRzCnwgTW9kdWxlLkFjdGlvbiB8IElzIHJlc3BvbnNlIGRlc2NyaWJlZD8gfAp8LS0tfC0tLXwKfCBhY2NvdW50LmJhbGFuY2UgIHwgKyB8CnwgYWNjb3VudC5iYWxhbmNlbXVsdGkgIHwgKyB8CnwgYWNjb3VudC50eGxpc3QgIHwgcGFydGlhbGx5IHwKfCBhY2NvdW50LnR4bGlzdGludGVybmFsIHwgcGFydGlhbGx5IHwKfCBhY2NvdW50LnRva2VudHggfCBwYXJ0aWFsbHkgfAp8IGFjY291bnQudG9rZW5uZnR0eCB8IHBhcnRpYWxseSB8CnwgYWNjb3VudC50b2tlbjExNTV0eCB8IHBhcnRpYWxseSB8CnwgYWNjb3VudC5nZXRtaW5lZGJsb2NrcyB8IHBhcnRpYWxseSB8CnwgYWNjb3VudC50eHNCZWFjb25XaXRoZHJhd2FsIHwgcGFydGlhbGx5IHwKfCBhY2NvdW50LmJhbGFuY2VoaXN0b3J5IHwgKyB8CiMjIyBDb250cmFjdHMKfCBNb2R1bGUuQWN0aW9uIHwgUmVzcG9uc2UgZGVzY3JpYmVkIHwKfC0tLXwtLS18CnwgY29udHJhY3QuZ2V0YWJpIHwgKyB8CnwgY29udHJhY3QuZ2V0c291cmNlY29kZSB8IHBhcnRpYWxseSB8CnwgY29udHJhY3QuZ2V0Y29udHJhY3RjcmVhdGlvbiB8ICsgfAp8IGNvbnRyYWN0LnZlcmlmeXNvdXJjZWNvZGUgfCArIHwKfCBjb250cmFjdC5jaGVja3ZlcmlmeXN0YXR1cyB8ICsgfAojIyMgVHJhbnNhY3Rpb25zCnwgTW9kdWxlLkFjdGlvbiB8IFJlc3BvbnNlIGRlc2NyaWJlZCB8CnwtLS18LS0tfAp8IHRyYW5zYWN0aW9uLmdldHN0YXR1cyB8IHBhcnRpYWxseSB8CnwgdHJhbnNhY3Rpb24uZ2V0dHhyZWNlaXB0c3RhdHVzIHwgcGFydGlhbGx5IHwKIyMjIEJsb2Nrcwp8IE1vZHVsZS5BY3Rpb24gfCBSZXNwb25zZSBkZXNjcmliZWQgfAp8LS0tfC0tLXwKfCBibG9jay5nZXRibG9ja3Jld2FyZCAgICAgfCBwYXJ0aWFsbHkgfAp8IGJsb2NrLmdldGJsb2NrY291bnRkb3duICB8ICsgfAp8IGJsb2NrLmdldGJsb2Nrbm9ieXRpbWUgICB8ICsgfAp8IHN0YXRzLmRhaWx5YXZnYmxvY2tzaXplICB8ICsgfAp8IHN0YXRzLmRhaWx5YmxrY291bnQgICAgICB8ICsgfAp8IHN0YXRzLmRhaWx5YmxvY2tyZXdhcmRzICB8ICsgfAp8IHN0YXRzLmRhaWx5YXZnYmxvY2t0aW1lICB8ICsgfAp8IHN0YXRzLmRhaWx5dW5jbGVibGtjb3VudCB8ICsgfAojIyMgTG9ncwp8IE1vZHVsZS5BY3Rpb24gfCBSZXNwb25zZSBkZXNjcmliZWQgfAp8LS0tfC0tLXwKfCBsb2dzLmdldExvZ3MgfCBwYXJ0aWFsbHkgfAojIyMgR2V0aC9QYXJpdHkgUHJveHkKfCBNb2R1bGUuQWN0aW9uIHwgUmVzcG9uc2UgZGVzY3JpYmVkIHwKfC0tLXwtLS18CnwgcHJveHkuZXRoX2Jsb2NrTnVtYmVyIHwgKyB8CnwgcHJveHkuZXRoX2dldEJsb2NrQnlOdW1iZXIgfCBwYXJ0aWFsbHkgfAp8IHByb3h5LmV0aF9nZXRVbmNsZUJ5QmxvY2tOdW1iZXJBbmRJbmRleCB8IHBhcnRpYWxseSB8CnwgcHJveHkuZXRoX2dldEJsb2NrVHJhbnNhY3Rpb25Db3VudEJ5TnVtYmVyIHwgKyB8CnwgcHJveHkuZXRoX2dldFRyYW5zYWN0aW9uQnlIYXNoIHwgcGFydGlhbGx5IHwKfCBwcm94eS5ldGhfZ2V0VHJhbnNhY3Rpb25CeUJsb2NrTnVtYmVyQW5kSW5kZXggfCBwYXJ0aWFsbHkgfAp8IHByb3h5LmV0aF9nZXRUcmFuc2FjdGlvbkNvdW50IHwgKyB8CnwgcHJveHkuZXRoX3NlbmRSYXdUcmFuc2FjdGlvbiB8ICsgfAp8IHByb3h5LmV0aF9nZXRUcmFuc2FjdGlvblJlY2VpcHQgfCArIHwKfCBwcm94eS5ldGhfY2FsbCB8ICsgfAp8IHByb3h5LmV0aF9nZXRDb2RlIHwgKyB8CnwgcHJveHkuZXRoX2dldFN0b3JhZ2VBdCB8ICsgfAp8IHByb3h5LmV0aF9lc3RpbWF0ZUdhcyB8ICsgfAojIyMgVG9rZW5zCnwgTW9kdWxlLkFjdGlvbiB8IFJlc3BvbnNlIGRlc2NyaWJlZCB8CnwtLS18LS0tfAp8IHN0YXRzLnRva2Vuc3VwcGx5ICAgICAgICAgICAgICAgIHwgKyB8CnwgYWNjb3VudC50b2tlbmJhbGFuY2UgICAgICAgICAgICAgfCArIHwKfCBzdGF0cy50b2tlbnN1cHBseWhpc3RvcnkgICAgICAgICB8ICsgfAp8IGFjY291bnQudG9rZW5iYWxhbmNlaGlzdG9yeSAgICAgIHwgKyB8CnwgdG9rZW4udG9rZW5ob2xkZXJsaXN0ICAgICAgICAgICAgfCArIHwKfCB0b2tlbi50b2tlbmluZm8gICAgICAgICAgICAgICAgICB8ICsgfAp8IGFjY291bnQuYWRkcmVzc3Rva2VuYmFsYW5jZSAgICAgIHwgKyB8CnwgYWNjb3VudC5hZGRyZXNzdG9rZW5uZnRiYWxhbmNlICAgfCArIHwKfCBhY2NvdW50LmFkZHJlc3N0b2tlbm5mdGludmVudG9yeSB8ICsgfAoKIyMjIEdhcyBUcmFja2VyCnwgTW9kdWxlLkFjdGlvbiB8IFJlc3BvbnNlIGRlc2NyaWJlZCB8CnwtLS18LS0tfAp8IGdhc3RyYWNrZXIuZ2FzZXN0aW1hdGUgfCArIHwKfCBnYXN0cmFja2VyLmdhc29yYWNsZSAgIHwgKyB8Cnwgc3RhdHMuZGFpbHlhdmdnYXNsaW1pdCB8ICsgfAp8IHN0YXRzLmRhaWx5Z2FzdXNlZCAgICAgfCArIHwKfCBzdGF0cy5kYWlseWF2Z2dhc3ByaWNlIHwgKyB8CiMjIyBTdGF0cwp8IE1vZHVsZS5BY3Rpb24gfCBSZXNwb25zZSBkZXNjcmliZWQgfAp8LS0tfC0tLXwKfCBzdGF0cy5ldGhzdXBwbHkgICAgICAgICAgICAgfCArIHwKfCBzdGF0cy5ldGhzdXBwbHkyICAgICAgICAgICAgfCArIHwKfCBzdGF0cy5ldGhwcmljZSAgICAgICAgICAgICAgfCArIHwKfCBzdGF0cy5jaGFpbnNpemUgICAgICAgICAgICAgfCArIHwKfCBzdGF0cy5ub2RlY291bnQgICAgICAgICAgICAgfCArIHwKfCBzdGF0cy5kYWlseXR4bmZlZSAgICAgICAgICAgfCArIHwKfCBzdGF0cy5kYWlseW5ld2FkZHJlc3MgICAgICAgfCArIHwKfCBzdGF0cy5kYWlseW5ldHV0aWxpemF0aW9uICAgfCArIHwKfCBzdGF0cy5kYWlseWF2Z2hhc2hyYXRlICAgICAgfCArIHwKfCBzdGF0cy5kYWlseXR4ICAgICAgICAgICAgICAgfCArIHwKfCBzdGF0cy5kYWlseWF2Z25ldGRpZmZpY3VsdHkgfCArIHwKfCBzdGF0cy5ldGhkYWlseW1hcmtldGNhcCAgICAgfCArIHwKfCBzdGF0cy5ldGhkYWlseXByaWNlICAgICAgICAgfCArIHwKCiMjIERyYXdiYWNrcwoKIyMjIFBhdGhzIGNvbnRhaW4gcXVlcnkgZWxlbWVudHMKCkFsbCBFdGhlcnNjYW4gQVBJIGVuZHBvaW50IFVSTHMgZm9sbG93IHRoZSBwYXR0ZXJuIGAuLi5ldGhlcnNjYW4uaW8vYXBpP21vZHVsZT1Nb2R1bGVOYW1lJmFjdGlvbj1BY3Rpb25OYW1lJi4uLmAuCgpIb3dldmVyLCBpbiB0ZXJtcyBvZiBPcGVuQVBJIDMuMSwgZW5kcG9pbnQgcGF0aHMgbXVzdCBiZSB1bmlxdWUuIFRvIG1lZXQgdGhpcyByZXF1aXJlbWVudCB3aGlsZSBzdGlsbCBkaXN0aW5ndWlzaGluZyBwYXRoIGl0ZW1zLCBJIGhhdmUgZGVzY3JpYmVkIHBhdGhzIGluIHRoZSBzcGVjaWZpY2F0aW9uIGxpa2UgdGhpczoKCmBgYApwYXRoczoKICAvP2FjY291bnQuYmFsYW5jZToKICAgIGdldDoKICAgIC4uLgogIC8/YWNjb3VudC5iYWxhbmNlbXVsdGk6CiAgICBnZXQ6CiAgICAuLi4KYGBgCgpUbyBtYWtlIHRoZSBsaW50ZXIgaWdub3JlIGl0LCBJIGhhdmUgdG8gZGlzYWJsZSBbcGF0aC1ub3QtaW5jbHVkZS1xdWVyeV0oaHR0cHM6Ly9yZWRvY2x5LmNvbS9kb2NzL2NsaS9ydWxlcy9wYXRoLW5vdC1pbmNsdWRlLXF1ZXJ5KSBydWxlLgoKIyMjIFRoZXJlIGFyZSBubyA0eHggcmVzcG9uc2VzIGRlc2NyaWJlZAoKVGhpcyBpcyBiZWNhdXNlIEV0aGVyc2NhbiBBUEkgZG9lcyBub3QgcmV0dXJuIHN1Y2ggcmVzcG9uc2VzLiBBbGwgcmVzcG9uc2VzIGhhdmUgYSAyMDAtT0sgY29kZS4gVG8gbWFrZSB0aGUgbGludGVyIGlnbm9yZSB0aGlzLCBJIGhhdmUgdG8gZGlzYWJsZSBbb3BlcmF0aW9uLTR4eC1yZXNwb25zZV0oaHR0cHM6Ly9yZWRvY2x5LmNvbS9kb2NzL2NsaS9ydWxlcy9vcGVyYXRpb24tNHh4LXJlc3BvbnNlKSBydWxlLgoKIyMjIFRoZSBbdGFnLWRlc2NyaXB0aW9uXShodHRwczovL3JlZG9jbHkuY29tL2RvY3MvY2xpL3J1bGVzL3RhZy1kZXNjcmlwdGlvbikgbGludGVyIHJ1bGUgaXMgZGlzYWJsZWQuCgpBY2NvcmRpbmcgdG8gdGhlIE9BMy4xIHNwZWNpZmljYXRpb24sIFt0YWdzXShodHRwczovL3NwZWMub3BlbmFwaXMub3JnL29hcy9sYXRlc3QuaHRtbCN0YWctb2JqZWN0KSBhcmUgYWxsb3dlZCB0byBoYXZlIG5vIGRlc2NyaXB0aW9uLiBIb3dldmVyLCB0aGUgUmVkb2MgbGludGVyIGFjdGl2YXRlcyB0aGlzIHJ1bGUgYnkgZGVmYXVsdCwgc28gSSBuZWVkIHRvIGRpc2FibGUgaXQuCgojIyBGb3IgZGV2ZWxvcGVycwoKYGBgCnBucG0gaW5zdGFsbApwbnBtIGNsaWVudApwbnBtIHRlc3QKYGBgCgpJc3N1ZXMgYW5kIHB1bGwgcmVxdWVzdHMgYXJlIHdlbGNvbWUuCgpVc2UgdGhpcyBhdCB5b3VyIG93biByaXNrIGFuZCByZXNwb25zaWJpbGl0eS4gUGxlYXNlIHJlc3BlY3QgdGhlIFtUZXJtcyBvZiBTZXJ2aWNlXShodHRwczovL2V0aGVyc2Nhbi5pby90ZXJtcykgb2YgRXRoZXJzY2FuLmlvLg== + readmeEtag: '"63e4b96b8f6a7bbbbc414d1024a53bcc9d64ac05a42f42ba2bc6f7545ea9cbc7"' + readmeLastModified: Fri, 12 Jul 2024 18:11:18 GMT repositoryId: 822090786 description: Etherscan.io API Specification in OpenAPI 3.1 Format. created: '2024-06-30T09:35:35Z' - updated: '2024-07-03T13:09:51Z' - language: null + updated: '2024-07-12T18:12:22Z' + language: TypeScript archived: false stars: 0 watchers: 1 forks: 0 owner: PurrProof logo: https://avatars.githubusercontent.com/u/149718167?v=4 - repoEtag: '"6072ba02202241febef93b36978a5602cfb1f9a986fe7715958f42feaf4edcf0"' - repoLastModified: Wed, 03 Jul 2024 13:09:51 GMT + repoEtag: '"de2e32289921cf2881a40fff4100c672904b6e3920d9069681e4985ecef2d064"' + repoLastModified: Fri, 12 Jul 2024 18:12:22 GMT category: Server Implementations foundInMaster: true - source: openapi3 tags @@ -32502,7 +32502,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-07-11T15:03:09Z' + updated: '2024-07-12T11:08:05Z' language: Kotlin archived: false stars: 455 @@ -32511,8 +32511,8 @@ owner: WebFuzzing logo: https://avatars.githubusercontent.com/u/29148026?v=4 license: LGPL-3.0 - repoEtag: '"dbafeac8f968c3b8d86c9783f274698e1193cd8b720efea86a84bad3576ef69e"' - repoLastModified: Thu, 11 Jul 2024 15:03:09 GMT + repoEtag: '"55b47e652b75202e7f67251b625c1c4d76c1c4e5790125895342728b70409d1c"' + repoLastModified: Fri, 12 Jul 2024 11:08:05 GMT foundInMaster: true id: d1d3d85149c4a9437dbdbf157cf3d7c7 oldLocations: @@ -33936,17 +33936,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-07-12T02:55:18Z' + updated: '2024-07-12T20:57:13Z' language: TypeScript archived: false - stars: 24584 + stars: 24605 watchers: 266 - forks: 4159 + forks: 4161 owner: tiangolo logo: https://avatars.githubusercontent.com/u/1326112?v=4 license: MIT - repoEtag: '"0e4b87ec456a13123ba7cba34816ef6221290b50ea64e3e5057eb2b649bf3050"' - repoLastModified: Fri, 12 Jul 2024 02:55:18 GMT + repoEtag: '"93c19bcdf7b8a84a5119af3644777f3105ad887e510f3362fd3ef7d1c5d72397"' + repoLastModified: Fri, 12 Jul 2024 20:57:13 GMT foundInMaster: true category: Server Implementations id: cc79a1d7275560aa48860f174da9137d @@ -33971,7 +33971,7 @@ forks: 4 owner: iStandaarden logo: https://avatars.githubusercontent.com/u/54351663?v=4 - repoEtag: '"ab1f9ee4aca5fb048d2ab549bc0e16d69fc420dd85964add99552887f6773e3b"' + repoEtag: '"9a8ecc93dd88bad0a05364cede664008717c9200582651df1455906c24bdc2c7"' repoLastModified: Wed, 13 Mar 2024 16:08:31 GMT foundInMaster: true category: Documentation @@ -35755,7 +35755,7 @@ owner: experienced-dev logo: https://avatars.githubusercontent.com/u/61656932?v=4 license: MIT - repoEtag: '"a409876b8d292d81739d69de6a2cd45222c4e9aecdd42498445768c0681293e6"' + repoEtag: '"60f02ce49f208ba138c771280270fa1a4641b68a84306a47eb3dc1eb82d20517"' repoLastModified: Sat, 26 Aug 2023 14:47:42 GMT category: - Parsers @@ -36459,17 +36459,17 @@ repositoryId: 351849045 description: OpenAPI Web component to generate a UI from the spec. created: '2021-03-26T16:42:43Z' - updated: '2024-07-09T03:49:27Z' + updated: '2024-07-12T12:27:19Z' language: JavaScript archived: false stars: 293 - watchers: 6 + watchers: 7 forks: 42 owner: Authress-Engineering logo: https://avatars.githubusercontent.com/u/35577654?v=4 license: Apache-2.0 - repoEtag: '"c01921322af894e10d08d1f60d492c944f1f6e1a77e3152dcf35af2996a5e3a0"' - repoLastModified: Tue, 09 Jul 2024 03:49:27 GMT + repoEtag: '"bbbfcc9aa8fc1a476e4c98230dedd096f8c3063c6edc2b54e1122fc22f5b3a4c"' + repoLastModified: Fri, 12 Jul 2024 12:27:19 GMT foundInMaster: true id: c8fb58ca4a515c7e0b381f4e63d7c355 oldLocations: @@ -36495,17 +36495,17 @@ repositoryId: 154916760 description: Build, Validate, Route, Authenticate and Mock using OpenAPI created: '2018-10-27T02:31:25Z' - updated: '2024-07-09T01:45:31Z' + updated: '2024-07-12T05:03:49Z' language: TypeScript archived: false - stars: 597 + stars: 598 watchers: 6 forks: 82 owner: openapistack logo: https://avatars.githubusercontent.com/u/147298423?v=4 license: MIT - repoEtag: '"04f97f9707bd774ba33c9027ccd03c8a9129a7002cc6fde276c13a8bae3d08db"' - repoLastModified: Tue, 09 Jul 2024 01:45:31 GMT + repoEtag: '"c2ef0c945eab57d356a698aba8ecf68ba8ecc7fcba028e121d91d546275205a3"' + repoLastModified: Fri, 12 Jul 2024 05:03:49 GMT foundInMaster: true id: 13cdf61fc6370ba6543e5a21256c2dfb oldLocations: @@ -38962,17 +38962,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-07-11T02:52:36Z' + updated: '2024-07-12T06:14:17Z' language: C# archived: false stars: 1358 watchers: 65 - forks: 226 + forks: 227 owner: microsoft logo: https://avatars.githubusercontent.com/u/6154722?v=4 license: MIT - repoEtag: '"4036b5ea8077fdc0a0c1b317c253d7d69e426f9726ca053ba1a1585e777f6efc"' - repoLastModified: Thu, 11 Jul 2024 02:52:36 GMT + repoEtag: '"acdc2c7982bb028ae41973130ff6c84c5afc0ab229ea4f8c5104160140f86537"' + repoLastModified: Fri, 12 Jul 2024 06:14:17 GMT id: f3215034d64cfcbcc28a4bdb0205a075 - source: IMPLEMENTATIONS.md name: openapi-validator @@ -39345,17 +39345,17 @@ repositoryId: 157976175 description: JavaScript client library for consuming OpenAPI-enabled APIs with axios created: '2018-11-17T11:04:15Z' - updated: '2024-07-04T07:28:31Z' + updated: '2024-07-12T05:02:58Z' language: TypeScript archived: false - stars: 533 + stars: 534 watchers: 6 forks: 67 owner: openapistack logo: https://avatars.githubusercontent.com/u/147298423?v=4 license: MIT - repoEtag: '"3f6afcd8af1f49c5057e7aea805780813bd5e7c8bf0e3b822f08a6270c864c6e"' - repoLastModified: Thu, 04 Jul 2024 07:28:31 GMT + repoEtag: '"7e42799da77f0e4b1a5c1b6ff8dbd2244e218125336c856141da10751bcec9a2"' + repoLastModified: Fri, 12 Jul 2024 05:02:58 GMT id: a3b46b452de775b27f5ce966a69ccfa3 oldLocations: - https://github.com/anttiviljami/openapi-client-axios @@ -39924,17 +39924,17 @@ repositoryId: 402435051 description: "An API security tool to capture and analyze API traffic, test API endpoints, reconstruct Open API specification, and identify API security risks.\_" created: '2021-09-02T13:41:19Z' - updated: '2024-07-05T10:43:20Z' + updated: '2024-07-12T06:38:59Z' language: Go archived: false - stars: 498 + stars: 499 watchers: 22 forks: 64 owner: openclarity logo: https://avatars.githubusercontent.com/u/89657786?v=4 license: Apache-2.0 - repoEtag: '"661b2fe64a213c65843fc8b71d88fbebb870c0bba1d6961c2429fdebe7efa29c"' - repoLastModified: Fri, 05 Jul 2024 10:43:20 GMT + repoEtag: '"e81c3cd067ae0d341f2b2ee6e11d3a57994f613ac3726af9a41a8644a0ceee24"' + repoLastModified: Fri, 12 Jul 2024 06:38:59 GMT foundInMaster: true id: 68b981acc13af75d4eb8c04143885e13 oldLocations: @@ -40119,7 +40119,7 @@ owner: guardrail-dev logo: https://avatars.githubusercontent.com/u/77855402?v=4 license: MIT - repoEtag: '"ad7476fef5c4f2fae08995bc9476bd98c348b086e666f49afe3e3e5eef7c0c78"' + repoEtag: '"48525612c44a946b83a9bae5fe5c0f1ae177bf4b2fe1071f3b108e546a0dcd28"' repoLastModified: Tue, 18 Jun 2024 00:12:13 GMT foundInMaster: true id: 5a3fd6a978abf3303c9cce3950582502 @@ -40156,7 +40156,7 @@ owner: loopbackio logo: https://avatars.githubusercontent.com/u/22173486?v=4 license: NOASSERTION - repoEtag: '"91c959a4a71ff8568d9e9544f8622f2e735b08dae4e0f667ccaa2c9df593f1d4"' + repoEtag: '"7f687de3bbab9f9e909d611afe14ba12529029037d695b0261aa1e732f7240ef"' repoLastModified: Thu, 11 Jul 2024 06:25:58 GMT foundInMaster: true id: 9132c25ad468bed25b9dbbe3a352abc2 @@ -40229,7 +40229,7 @@ testing cloud services through their REST APIs and finding security and reliability bugs in these services. created: '2020-07-24T21:40:11Z' - updated: '2024-07-11T22:55:03Z' + updated: '2024-07-12T10:27:10Z' language: Python archived: false stars: 2520 @@ -40238,8 +40238,8 @@ owner: microsoft logo: https://avatars.githubusercontent.com/u/6154722?v=4 license: MIT - repoEtag: '"632ace19952e0f17dc0583700212b8c9f4b5e8dfa33e0f0e9b5bcaaa4d6b25f5"' - repoLastModified: Thu, 11 Jul 2024 22:55:03 GMT + repoEtag: '"d1e888eb6aee4d26a8b31dece6507eb4c8f5d4563aab0ba7880d2e2669aa4d98"' + repoLastModified: Fri, 12 Jul 2024 10:27:10 GMT foundInMaster: true oldLocations: - https://github.com/microsoft/restler @@ -40978,17 +40978,17 @@ Protobuf v3 (for grpc) based lightweight microservice framework. It supports monolith service application as well. created: '2021-02-24T07:21:40Z' - updated: '2024-07-09T21:25:20Z' + updated: '2024-07-12T14:10:49Z' language: Go archived: false - stars: 1399 + stars: 1400 watchers: 96 forks: 249 owner: unionj-cloud logo: https://avatars.githubusercontent.com/u/79033021?v=4 license: MIT - repoEtag: '"1a5f9528b4aef0a932f4b53aab11c9de922a57a135e0c17e87147d920408cbd0"' - repoLastModified: Tue, 09 Jul 2024 21:25:20 GMT + repoEtag: '"4ef30490dcfa110b81dfc59fb3fb89840fe01eeb4392a01fd3d1eaf5261d6256"' + repoLastModified: Fri, 12 Jul 2024 14:10:49 GMT foundInMaster: true category: SDK id: aab01f8bda6c542fdacf9ee8dfa7d20d